我在控制器中重载Index操作时遇到一些问题。在控制器中,我有以下行动:
public ActionResult Index(int id)
{
return View();
}
public ActionResult Index()
{
return View();
}
转到任一URL(controllername /或controllername / 1)会导致500错误。但是,当我使用:
public ActionResult Index(int? id)
{
return View();
}
controllername / URL有效,但controllername / 1导致404错误。我的global.asax很香草:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
我想要做的是能够处理null id和整数id值。任何建议都将不胜感激。
谢谢!
答案 0 :(得分:1)
我认为您需要明确其路线:
routes.MapRoute(
"ControllerName", // Route name
"ControllerName/{id}", // URL with parameters
new { controller = "ControllerName", action = "Index", id = UrlParameter.Optional }
);
如果它不起作用,您可能需要更明确并在之前添加:
routes.MapRoute(
"ControllerName",
"ControllerName",
new { controller = "ControllerName", action = "Index"}
);
答案 1 :(得分:1)
我认为你不需要重载,但只需要在索引操作中检查null。 重载动作不是一个好主意,因为框架不知道调用哪个动作包含空索引。
为每个操作重载添加自定义路由将导致响应时间变慢,因为要解析的自定义路由太多。