В настоящее время у меня есть следующие маршруты:
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();
В SpecialController есть метод: public ActionResult Index(int ID)
Всякий раз, когда я указываю своему браузеру http://hostname/test/5
, я получаю следующую ошибку:
Словарь параметров содержит пустую запись для параметра 'ID' ненулевого типа 'System.Int32' для метода 'System.Web.Mvc.ActionResult Index (Int32)' в 'SpecialController',Чтобы сделать параметр необязательным, его тип должен быть либо ссылочным типом, либо типом Nullable. Имя параметра: параметрыОписание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Почему это так? Я использовал отладчик маршрута mvccontrib, и кажется, что маршрут доступен, как и ожидалось.