Реализация маршрутов для динамических действий в MVC 4.0

Можно ли определить маршрут в MVC, который динамически разрешает действие на основе части маршрута?

public class PersonalController
{
  public ActionResult FriendGroup()
  {
      //code
  }

  public ActionResult RelativeGroup()
  {
      //code
  }

  public ActionResult GirlFriendGroup()
  {
      //code
  }
}

Я хочу реализовать маршрутизацию для моего метода групповых действий ниже

Url: www.ParlaGroups.com/FriendGroup
     www.ParlaGroups.com/RelativeGroup
     www.ParlaGroups.com/GirlFriendGroup

routes.MapRoute(
    "Friends",
    "/Personal/{Friend}Group",
    new { controller = "Personal", action = "{Friend}Group" }
);
routes.MapRoute(
    "Friends",
    "/Personal/{Relative}Group",
    new { controller = "Personal", action = "{Relative}Group" }
);
routes.MapRoute(
    "Friends",
    "/Personal/{GirlFriend}Group",
    new { controller = "Personal", action = "{GirlFriend}Group" }
);

Как я могу выполнить указанную выше реализацию маршрутизации?


person Siva P    schedule 10.09.2014    source источник
comment
Это маршрутизация 101. Пожалуйста, документация: asp.net/mvc/tutorials/older-versions/controllers-and-routing/   -  person Chris Pratt    schedule 10.09.2014


Ответы (1)


Следующий маршрут позволит MVC определить ActionResult, используя вторую часть URL-адреса:

routes.MapRoute(
"Friends",
"Personal/{action}",
new { controller = "Personal" }
);

Следующие URL-адреса будут совпадать:

www.ParlaGroups.com/Personal/FriendGroup Где «FriendGroup» — это результат действия www.ParlaGroups.com/Personal/RelativeGroup Где «RelativeGroup» — это результат действия www.ParlaGroups. com/Personal/GirlFriendGroup Где «GirlFriendGroup» — это ActionResult

person Carl    schedule 10.09.2014
comment
Хорошо, я больше не понимаю, чего вы пытаетесь достичь. Вы можете удалить группу из имен методов результатов ваших действий и иметь маршрут, например: routes.MapRoute( "Friends", "Personal/{action}Group", new { controller = "Personal" } ); - person Carl; 10.09.2014