MVC3重载索引操作获得500个错误

时间:2012-05-13 15:06:32

标签: c# asp.net-mvc-3

我在控制器中重载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值。任何建议都将不胜感激。

谢谢!

2 个答案:

答案 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。 重载动作不是一个好主意,因为框架不知道调用哪个动作包含空索引。

为每个操作重载添加自定义路由将导致响应时间变慢,因为要解析的自定义路由太多。