MVC Advanced Routing - PullRequest
       5

MVC Advanced Routing

0 голосов
/ 05 декабря 2009

Я пытаюсь направить URL, который не имеет статического действия, т.е. пользователи могут создавать системы, которые могут быть представлены любой строкой. Я хотел бы иметь URL-адрес, подобный следующему:

http://yousite.com/System/WIN1234/Configure

По умолчанию механизм маршрутизации считает, что WIN1234 - это действие, тогда как я хотел бы иметь возможность перехватить WIN1234 и принять решение о том, какой метод генерировать. Как в:

public void RouteSystemRequest(string system, string action)
{

  switch (action)
  {

    case "Configure":

        ConfigureSystem(string system);
        break;

  }

}

Как мне это сделать? Это логично, или я все это думаю неправильно?

1 Ответ

1 голос
/ 05 декабря 2009

То, что вам нужно сделать, возможно. Вам необходимо настроить маршрут по умолчанию, который указывает на системное действие, и вы должны принять другие значения в качестве параметров для действия.

    //General
    routes.MapRoute(
        "Default7",                                              // Route name
        "{action}/{param1}/{param2}",                           // URL with parameters
        new { controller = "Home", action = "Index", param1 = "", param2 = "" }  // Parameter defaults
    );

В вашем коде вы получите значения Win1234 и Configure по умолчанию.

Затем вы можете реализовать свою логику переключения и использовать RedirectToAction для перехода к желаемому действию.

...