【发布时间】:2015-03-18 20:56:56
【问题描述】:
我的 ASP.NET MVC 项目在组合 URL 时似乎忽略了路由默认值。例如,Url.Action("Index", "Home") 返回 /Home/Index/,而它应该只返回 /(我在所有其他 MVC 网站上都看到过)。 使用 URL 没有任何问题,例如通过访问http://myserver/,可以正确找到默认的控制器和动作。
如何解决该行为? (请注意,我发现 questions 询问如何实现这种行为,但似乎没有人遇到这个相反的问题。)
该项目没什么了不起,没有自定义路由处理程序等,而且路由配置非常简单:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("LoginHandler");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{*id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
(* 之所以存在,是因为某些操作使用任意字符串作为标识符,其中可能包含嵌入的斜杠,并且没有星号,路由与此类 URL 不匹配。)
【问题讨论】:
标签: asp.net-mvc-routing asp.net-mvc-5.2