Zunächst einmal bin ich neu in MVC, so entschuldigen Sie bitte die Frage, wenn es grundlegend ist.
Ich verwende eine benutzerdefinierte Route, um die folgende URL zu erstellen ( http://mysite/subscriber/12345 ), wobei 12345 die Teilnehmernummer ist. Ich möchte, dass es die ShowAll
Aktion im Subscriber
Controller. Meine Route ist feuernd und verwendet Phil's Routen-Debugger Wenn ich die obige URL eingebe, zeigt der Routendebugger die ID 12345 an. Mein Controller akzeptiert einen int als subscriberID
. Wenn sie ausgelöst wird, wirft der Controller den Fehler
Das Parameterwörterbuch enthält einen Nulleintrag für den Parameter 'id' vom nicht-nullbaren Typ 'System.Int32'.
Warum zeigt der Routendebugger einen Wert an und der Controller sieht ihn nicht?
Hier ist meine Route (die erste ist der Übeltäter)
routes.MapRoute(
"SubscriberAll",
"subscriber/{id}",
new { controller = "Subscriber", action = "ShowAll", id=0 },
new { id = @"\d+" } //confirm numeric
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
Irgendeine Idee, warum ich eine Null in der ShowAll
Aktion? Hier ist die Signatur der Aktionsmethode:
public ActionResult ShowAll(int id)