2009-06-14 6 views
0

Ich versuche eine Route zu erstellen und dann programmatisch die URL dieser Route abzurufen (damit ich sie an meinen jquery-rater.js Code übergeben kann).Wie richte ich diese Route mit ASP.NET MVC ein?

Also, ich möchte die folgende URL haben:/vote/create Der Benutzer muss HTTP-POST zu ihm. Buchung der zwei Werte: 1. PostId 2. Abstimmungsergebnis (Byte von 1 < -> 5).

Das ist mein Weg Info:

routes.MapRoute(
    "Vote-Create", 
    "vote/create/", 
    new {controller = "Post", action = "VoteCreate"} 
); 

Dies ist meine Aktionsmethode (die auch ich bin nicht sicher, ob es richtig ist).

[AcceptVerbs(HttpVerbs.Post)] 
public JsonResult VoteCreate(int postId, byte score) 
{ .. } 

schließlich das ist, wo ich die uri bestimmen müssen (und ich bin nicht sicher, wie): -

<script type="text/javascript">$(function() 
    { $('#rating<%= Model.Post.PostId %>') 
      .rater({ postHref: 'URI IN HERE' }); }); 
</script> 

Zuerst dachte ich, ich könnte das <% = Html verwenden. BuildUrlFromExpression (..)%> aber ich bin mir nicht sicher wie.

Gibt es einen besseren/richtigen Weg?

Dank Leute :)

Antwort

3

Es gibt eine UrlHelper auf der Viewpage ist die plunty Leckereien hat, dies zu tun. Da Sie die Route zu benennen ("View-Create") können Sie

<%=Url.RouteUrl("Vote-Create") %> 

in Ihrem Code wie diese etwas tun. Wenn Sie den Namen der Route nicht verwenden möchten, können Sie auch die Aktionsmethode verwenden und den Aktionsnamen und die von Ihnen benötigten Werte übergeben.

<%=Url.Action("VoteCreate") %> 

Hier ist die url helper reference

Edit: Ihr Weg sieht die richtige ist, und wenn das funktioniert auf meiner Box zu testen es wie ein Zauber :)

+0

Gibt es noch andere stark typisierte Lösungen? –

+0

Nein, es gibt keine anderen stark typisierten Lösungen mit MVC oder Futures, aber David Ebbo hat eine wirklich gute Implementation. [http://blogs.msdn.com/davidebb/archive/2009/06/01/a-buildprovider-to-simplify-your-asp-net-mvc-action-links.aspx] Achten Sie auch darauf, seine zu sehen letzter Beitrag, der T4-Vorlagen verwendet. Hoffe das hilft! – Jake