2011-02-16 4 views
3

MVC 3으로 마이그레이션 한 MVC 2가 있습니다. 마이그레이션 한 후 더 이상 내 ActionLink가 작동하지 않습니다. 나는 그것이 나의 디폴트 길 때문에 그것이 었다고 알았다.ASP.NET MVC 3 Route Breaks 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}", new { controller = "Home", action = "Index", id = UrlParameter.Optional }); 

제목 선택 매개 변수가 내 ActionLink를 깨뜨리는 이유는 무엇입니까?

답변

2

문제가되는 것은 제목 매개 변수가 선택 사항이 아닙니다. 귀하의 경우 그것은 선택적 매개 변수입니다. 경로 정의의 마지막 매개 변수 만 선택적 일 수 있으며이 규칙은 ASP.NET MVC 3에서 시행되었습니다.이 항목에 대한 내용은 similar question입니다.

그래서 당신은 그런 경로가하려는 경우 해당 링크를 생성 할 때 항상 id 매개 변수에 대한 값을 지정해야합니다 :

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

와우. 그게 알아두면 좋다! 감사. –

+0

죄송합니다. Phil Haack이 방금이 버그를 게시했습니다. –