ASP.NET MVC routing - versucht zu haben, einen Namen in der URL

Ich habe derzeit die folgenden Strecken:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.gif/{*pathInfo}");

MvcRoute.MappUrl("{controller}/{action}/{ID}")
    .WithDefaults(new { controller = "home", action = "index", ID = 0 })
    .WithConstraints(new { controller = "..." })
    .AddWithName("default", routes)
    .RouteHandler = new MvcRouteHandler();

MvcRoute.MappUrl("{title}/{ID}")
    .WithDefaults(new { controller = "special", action = "Index" })
    .AddWithName("view", routes)
    .RouteHandler = new MvcRouteHandler();

Den SpecialController hat eine Methode: public ActionResult Index(int ID)

Immer wenn ich meinen browser http://hostname/test/5, bekomme ich die folgende Fehlermeldung:

Den Parameter-dictionary enthält einen null-Eintrag für den parameter 'ID' nicht-nullable-Typ 'System.Int32' für die Methode 'System.Web.Mvc.ActionResult Index(Int32)' in 'SpecialController'. Um einen parameter optional sein Typ sollte entweder ein Verweis oder ein Nullable-Typ.

Parameter name: Parameter

Beschreibung: Eine nicht behandelte Ausnahme ist aufgetreten während der Ausführung der aktuellen Webanforderung. Bitte überprüfen Sie die Stapelüberwachung für weitere Informationen über den Fehler und wo Sie Ihren Ursprung in den code.

Warum ist das so? Ich benutzte die mvccontrib route debugger, und es scheint, dass die route ist zugänglich wie erwartet.

InformationsquelleAutor Yannis | 2009-07-25
Schreibe einen Kommentar