Хорошо, это меня заводит. Мой клиент находится на MVC 2 (да, я знаю) и хочет еще несколько действий, добавленных в их существующее приложение.MVC Route, запрашивающий параметр, когда он указан в моем URL-адресе
Если я кладу в URL из:
http://10.211.55.3/Templates/
он работает, как ожидалось, и приходит с действием по умолчанию. Однако, если я ставлю в:
http://10.211.55.3/Templates/GetTemplateDetails/1
Я получаю эту ошибку:
The parameters dictionary contains a null entry for parameter 'TemplateID' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult GetTemplateDetails(Int32)'. To make a parameter optional its type should be either a reference type or a Nullable type. Parameter name: parameters
Насколько я могу судить, я поставляя правильный шаблон маршрута и до сих пор это не похоже на работу. Глядя на их Global.asax у них есть то, что можно было бы ожидать:
routes.AddCombresRoute("Combres Route");
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("favicon.ico");
routes.MapRoute(
"Default", // Route name
{controller}/{action}/{id}", // URL with parameters
new {controller = "Home", action = "Index", id = 0} // Parameter defaults
);
routes.MapRoute(
"MarketingRoute",
"Marketing/{action}/{routingAction}/{token}",
new
{
controller = "Marketing",
action = "Route",
routingAction = string.Empty,
token = string.Empty
});
..И вот тестовое воздействие на контроллер, который не работает ....
public ActionResult Index()
{
return View();
}
[AcceptVerbs(HttpVerbs.Get)]
[ActionName("GetTemplateDetails")]
public ActionResult GetTemplateDetails(int TemplateID)
{
return View();
}
Действительно надеясь свежий пара глаз может помочь понять, что я, очевидно, здесь не замечаю.
Это определенно сделает его необязательным, но я думаю, что я обнаружил, что я делаю, и мне нужно разъяснить маршрут маршрутизации MVC. Если я переименую его в GetTemplateDetails (int id), он будет работать. Поэтому я предполагаю, что это связано с тем, что маршрут по умолчанию ищет параметр «id» и «TemplateID». Верный? –
Итак, у вас есть параметр с именем TemplateID, и вы хотите, чтобы у него было значение из идентификатора параметра. Это проблема привязки. Проверьте это для получения дополнительных сведений http://mgolchin.net/posts/20/dive-deep-into-mvc-imodelbinder-part-1 –