Frage

Ich habe eine asp.net MVC-Anwendung mit einer Route ähnlich wie:

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}" }
);

Meine Controller-Aktion Methode Signatur wie folgt aussieht:

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

Aus meiner Sicht Ich mache so etwas wie:

<%= Html.ActionLink<BlogController>(item => item.Detail(blog.PostedOn.Year, blog.PostedOn.Month, blog.PostedOn.Day, blog.Slug), blog.Title) %>

Während die URL, die mit Action funktioniert erzeugt wird, es Query-String-Variablen eher als URL-Rewriting verwendet.

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 Action richtig Pad die Integer-Werte zu erhalten, damit die URL wie erwartet kommt?

Danke

Jim

War es hilfreich?

Lösung

Ich würde vorschlagen, das Jahr, Monat Formatierung und Tag als Strings statt. Denken Sie darüber nach: Werden Sie alle mathematischen auf diesen „ganzen Zahlen“ tun? Wahrscheinlich nicht, so gibt es wirklich keinen Sinn für sich ganze Zahlen machen. Sobald Sie sie als Strings haben, können Sie die führende Null-Format erzwingen.

Andere Tipps

Die Tatsache, dass Sie Ihre Parameter sind ganze Zahlen hat nichts mit dem Problem zu tun. Die Route Definition Sie verwendet werden soll tatsächlich nicht verwendet werden, weshalb die erzeugte URL Query-String-Parameter verwenden, anstatt die Struktur des Gebäudes Sie wollen.

Die Routen werden von oben nach unten ausgewertet, so haben Sie wahrscheinlich eine allgemeinere Routendefinition, die Ihre Wunsch-URL Generation gerecht zu werden. Versuchen Sie, die Strecke bewegen Sie in diesem Beitrag oben auf Ihrer Route Definitionen angezeigt, und Sie werden sehen, dass Ihre generierten Link ist als man erwarten würde. Schauen Sie in Ihre Route Definitionen zu modifizieren entweder Genauer gesagt, oder sie ebenso notwendig bewegen.

Debugging diese Art von Szenarien kann ein großen Schmerzen. Ich würde vorschlagen, Phil Haack Download Route Debugger , es wird Ihr Leben viel einfacher machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top