2011-02-16 110 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