MVC3重载索引操作得到500错误(MVC3 Overloading the Index actio

2019-10-16 17:36发布

我有一些问题超载控制器中的索引操作。 在控制器我有下列行为:

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
);

我想这样做的是能够处理空ID以及值的整数ID。 任何建议将不胜感激。

谢谢!

Answer 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"}
);


Answer 2:

我认为你不需要这里的过载,而只需要对空索引操作中进行检查。 超载行为是不是一个好主意,因为框架就没有的柜面空指数的调用哪个动作的想法。

添加自定义路由的每一个动作超载会导致因为太多的定制路由的较慢的响应时间解决。



文章来源: MVC3 Overloading the Index action getting 500 errors