Asp.net mvc ASP.NET MVC 3路由中断ActionLink功能
我有一个迁移到MVC 3的MVC 2。迁移后,我的所有ActionLink都不再有效。我发现这是因为我的默认路线Asp.net mvc ASP.NET MVC 3路由中断ActionLink功能,asp.net-mvc,asp.net-mvc-2,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 2,Asp.net Mvc 3,我有一个迁移到MVC 3的MVC 2。迁移后,我的所有ActionLink都不再有效。我发现这是因为我的默认路线 routes.MapRoute( "Default", "{controller}/{action}/{id}/{title}", new { controller = "Home", action = "Index", id = UrlParameter.Optional, title = UrlParameter.Optional } ); 如果我将默认路由更改为MVCs默认路
routes.MapRoute( "Default", "{controller}/{action}/{id}/{title}", new { controller = "Home", action = "Index", id = UrlParameter.Optional, title = UrlParameter.Optional } );
如果我将默认路由更改为MVCs默认路由,它会再次正常工作
routes.MapRoute( "Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional } );
为什么title可选参数会破坏我的ActionLinks?不是title可选参数有问题。在您的情况下,id参数是可选的。只有路由定义的最后一个参数可以是可选的,并且此规则已在ASP.NET MVC 3中强制执行。这里有一个关于这个话题的例子 因此,如果您希望拥有此类路由,请确保在生成这些链接时始终为id参数指定一个值:
@Html.ActionLink("text", "Index", new { id = "123" })
结果证明这是框架中的一个bug 抱歉,Phil Haack刚刚发布消息说这是一个bug。