У меня есть собственный маршрут, зарегистрированный в моем приложении, но только маршрут по умолчанию работает правильно.
Вот мои отображения маршрутов:
routes.MapRoute(
name: "MyCustomRoute",
url: "Foo/Index/{myid}",
defaults: new { controller = "Foo", action = "Index", myid = UrlParameter.Optional },
namespaces: new[] { "MyApp.Controllers" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "MyApp.Controllers" }
);
И мой метод действия FooController
public ActionResult Index(int MyID)
{
//...
return View();
}
Если я добавлю параметр myid в строку запроса, все будет работать нормально (т.е.Foo / Индекс /? MyID = 1).Но переписанный URL (/ Foo / Index / 1) приводит к этой ошибке:
The parameters dictionary contains a null entry for parameter 'MyID' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Index(Int32)' in 'TPC_CS_Portal.Controllers.FooController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
Parameter name: parameters
Как уже упоминалось, все мои другие контроллеры, которые используют маршрут по умолчанию (с параметром id), все работают нормально (например, / SomethingElse /Индекс / 1).
Что мне нужно сделать, чтобы мой собственный маршрут работал?