ASP.NET MVC 3路由中断ActionLink功能

时间:2011-02-16 06:27:06

标签: asp.net-mvc asp.net-mvc-2 asp.net-mvc-3

我有一个MVC 2,我迁移到MVC 3.迁移后,我的ActionLinks都没有工作了。我发现这是因为我的默认路线。

routes.MapRoute( "Default", "{controller}/{action}/{id}/{title}", new { controller = "Home", action = "Index", id = UrlParameter.Optional, title = UrlParameter.Optional } );

如果我将默认路由更改为MVC默认路由,则可以再次正常工作。

routes.MapRoute( "Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional } );

为什么使用title可选参数会破坏我的ActionLinks?

2 个答案:

答案 0 :(得分:2)

可选的标题参数不是有问题的。在您的情况下,id参数是可选的。只有路由定义的最后一个参数可以是可选的,并且此规则已在ASP.NET MVC 3中强制实施。这是关于此主题的similar question

因此,如果您想要这样的路由,请确保在生成这些链接时始终为id参数指定值:

@Html.ActionLink("text", "Index", new { id = "123" })

答案 1 :(得分:2)