2012-04-20 2 views
3

У меня есть действия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)
Он швы, что каким-то образом один маршрут блокирует другой.

ответ

3

Попробуйте это вместо:

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

Смежные вопросы