T4MVC - конфликт разных контроллеров

у меня есть действия

public virtual ActionResult Show(string userId)

и

public virtual ActionResult Show(int groupId)

В Global.asax у меня есть

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

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

Теперь, когда я запрашиваю group/show/..., все работает нормально. Но когда я вызываю параметр Profile/Show/..., он равен нулю. Но если я уберу UserProfile_Default, то оба будут работать, но URL-адрес профиля будет содержать вопросительный знак для параметра (и я хочу, чтобы он был чистым, как .../profile/show/5678)
Похоже, что один маршрут каким-то образом блокирует другой.


person 1110    schedule 20.04.2012    source источник


Ответы (1)


Вместо этого попробуйте следующее:

routes.MapRoute(
    "Group_Default",
    "Group/{action}/{groupId}",
    new { controller = "Group" }
);

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

На будущее: отладчик маршрутов — это действительно хороший инструмент, позволяющий точно увидеть, что происходит с вашей маршрутизацией и какие URL-адреса вызывают какие действия: http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

person mattytommo    schedule 20.04.2012