2012-04-20 2 views
3

은 내가T4MVC는 - 다른 컨트롤러 충돌

routes.MapRoute(
       "Group_Default", 
       "{controller}/{action}/{groupId}", 
       MVC.Groups.Show() 
      ); 

      routes.MapRoute(
       "UserProfile_Default", 
       "{controller}/{action}/{userId}", 
       MVC.Profile.Show() 
      ); 

내가 group/show/...을 요청하면 지금은 잘 작동이 행동

public virtual ActionResult Show(string userId) 

과의 Global.asax에서
public virtual ActionResult Show(int groupId) 

있습니다. 하지만 Profile/Show/...이라는 매개 변수는 null입니다. 하지만 만약 내가 UserProfile_Default을 제거한다면, 둘 다 작동하지만 프로필 URL은 매개 변수에 대한 물음표를 포함합니다. (그리고 나는 그것을 .../profile/show/5678처럼 깨끗하게하고 싶습니다)
어떻게 든 하나의 라우트가 다른 것을 차단하는 것은 솔기가 있습니다.

답변

3

대신 다음을 시도해보십시오 http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

:

향후 참조를 위해
routes.MapRoute(
    "Group_Default", 
    "Group/{action}/{groupId}", 
    new { controller = "Group" } 
); 

routes.MapRoute(
    "UserProfile_Default", 
    "Profile/{action}/{userId}", 
    new { controller = "Profile" } 
); 

가, 경로 디버거가 정확히 라우팅 일어나고하고있는 URL을하는 것은 어떤 조치를 치고있는 것을 볼 수있는 정말 좋은 도구입니다

관련 문제