2011-02-16 109 views
3

我有一个MVC 2,我迁移到MVC 3.迁移后,我的ActionLinks都没有工作了。我发现这是因为我的默认路线。ASP.NET MVC 3路由中断ActionLink功能

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

为什么标题可选参数会破坏我的ActionLinks?

回答

2

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

所以,如果你想拥有这样的路线确保生成这些链接时总是指定ID参数的值:

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

哇。这很好知道!谢谢。 – 2011-02-16 15:27:16