2008-09-28 7 views
5

Ich habe eine asp.net MVC-Anwendung mit einer Route ähnlich wie:Asp.Net MVC: Wie bekomme ich Html.ActionLink, um ganzzahlige Werte richtig darzustellen?

routes.MapRoute("Blog", 
    "{controller}/{action}/{year}/{month}/{day}/{friendlyName}",       
    new { controller = "Blog", action = "Index", id = "", friendlyName="" }, 
    new { controller = @"[^\.]*", 
      year = @"\d{4}", 
      month = @"\d{2}", 
      day = @"\d{2}" } 
); 

sieht meine Controller-Aktion Methode Signatur wie:

public ActionResult Detail(int year, int month, int day, string friendlyName) 
{ // Implementation... } 

Aus meiner Sicht Ich mache so etwas wie:

Während die URL, die mit ActionLink generiert wird, funktioniert, verwendet es Abfragezeichenfolgenvariablen statt URL-Umschreibung.

Zum Beispiel wäre es produzieren/Blog/detail/my-Slug? Year = 2008 & Monat = 7 & Tag = 5 statt/Blog/Detail/2008/07/05/my-Slug

Gibt es eine Möglichkeit, die generische Version von ActionLink zu erhalten, um die Integer-Werte richtig aufzufüllen, so dass die URL wie erwartet ausgegeben wird?

Dank

Jim

Antwort

2

Ich würde vorschlagen, das Jahr, Monat Formatierung und Tag als Strings statt. Denken Sie darüber nach: Werden Sie mit diesen "ganzen Zahlen" rechnen? Wahrscheinlich nicht, also hat es wirklich keinen Sinn, sie zu Ganzzahlen zu machen. Sobald Sie sie als Strings haben, können Sie das führende Nullformat erzwingen.

+0

Obwohl nicht eine optimale Lösung, ich weiß, das wird funktionieren –

4

Die Tatsache, dass Ihre Parameter Ganzzahlen sind, hat nichts mit Ihrem Problem zu tun. Die Routendefinition, die Sie verwenden möchten, wird nicht tatsächlich verwendet. Aus diesem Grund verwendet die generierte URL Abfrageparameter, anstatt die gewünschte Struktur zu erstellen.

Routen werden von oben nach unten ausgewertet. Daher haben Sie wahrscheinlich eine allgemeinere Routendefinition, die die angeforderte URL-Generierung erfüllt. Versuchen Sie, die Route, die Sie in diesem Beitrag angezeigt haben, an den Anfang Ihrer Routendefinitionen zu verschieben, und Sie werden sehen, dass Ihr generierter Link Ihren Erwartungen entspricht. Sehen Sie sich dann an, wenn Sie Ihre Routendefinitionen modifizieren, um entweder genauer zu sein, oder verschieben Sie sie einfach nach Bedarf.

Debuggen dieser Art von Szenarien kann ein großer Schmerz sein. Ich würde vorschlagen, Phil Haack route debugger herunterzuladen, es wird Ihr Leben viel einfacher machen.

+0

Die Route ist an der Spitze, unordentlich. Ich werde jedoch den Debugger sehen. –

Verwandte Themen