2 Stimmen

ASP.NET MVC Standardparameter

Ich habe eine neue Route wie folgt erstellt:

   routes.MapRoute(
     "BlogYMD",
     "blog/date/{year}/{month}/{day}",
     new { controller = "Blog", action = "Date", year = "2009", month="01", day="01" });

Die Ansicht gibt einfach eine Verkettung von Jahr, Monat und Tag zurück. Dies funktioniert gut für URLs wie:

http://localhost/blog/date/2009/01/01

Wenn ich jedoch diese URL eingebe:

http://localhost/blog/date/2009

Erwarte ich, dass die Standardwerte für Monat und Tag an die Datumsfunktion übergeben werden. Dies geschieht jedoch nicht, alle Parameter der Methode kommen als null durch.

Habe ich etwas Offensichtliches übersehen?

0 Stimmen

Wie kommen sie als null durch, die Parameter sollten als Ganzzahlen definiert sein, das Bindungssystem in MVC wird sich um das Casten kümmern.

2voto

Craig Stuntz Punkte 124703

Sie zeigen nicht den Rest Ihrer Routen, aber ich vermute, dass Sie eine andere Route über dieser in Ihrem global.asax.CS haben (zum Beispiel die Standardroute), die mit der zweiten URL übereinstimmt.

2voto

Jonathan Freeland Punkte 4905

Die Reihenfolge, in der Sie Routen deklarieren, ist wichtig. Sie möchten, dass Ihre benutzerdefinierten Routen vor der Standardroute deklariert werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X