У меня возникают проблемы с настройкой маршрута для ограничения параметров действия контроллера только целыми числами.
У меня есть действие контроллера следующим образом:
[RequiresRole(RoleToCheckFor = "Administrator"), AcceptVerbs(HttpVerbs.Get)]
public ActionResult Edit(int id)
{
...
}
и следующие маршруты в Global.asax.cs:
routes.MapRoute(
"UserEdit",
"user/edit/{id}",
new {controller = "user", action = "edit"},
new {id = @"\d+"}
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
routes.MapRoute("Error",
"{*url}",
new { controller = "Error", action = "notfound" });
Поэтому я ожидаю, что если я введу http://domain.com/user/edit/ABCD i , то не должен получить следующую обычную ошибку:
Словарь параметров содержит пустую запись для параметра 'id' ненулевого типа 'System.Int32' для метода 'System.Web.Mvc.ActionResult Edit (Int32)'
Это (я думаю) это именно то, что также сказано в http://www.asp.net/%28S%28pdfrohu0ajmwt445fanvj2r3%29%29/learn/mvc/tutorial-24-cs.aspx
Тем не менее, я все еще вижу ошибку "... null entry ...".
Есть идеи, почему это так? Что-то не так с настройкой маршрута?
Спасибо