MVC Custom Routing - PullRequest
       13

MVC Custom Routing

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

Я новичок в MVC. У меня проблемы с попыткой выполнить настройку маршрута следующим образом:

System/{systemName}/{action}

Где systemName является динамическим и не имеет "статического" метода, который он вызывает. т.е.

http://sitename.com/Systems/LivingRoom/View

Я хочу, чтобы вышеуказанный URL вызывал метод, такой как,

public void RouteSystem(string systemName, string action)
{
  // perform redirection here.
}

Кто-нибудь знает, как этого добиться?

Ответы [ 3 ]

2 голосов
/ 04 декабря 2009
routes.MapRoute(
    "Systems_Default",
    "System/{systemName}/{action}",
    new { controller="System", action = "RouteSystem", systemName="" }
);

Следует направить ваш запрос, как вы указали.

Обратите внимание, что с указанным выше маршрутом ваш URL должен быть:

http://sitename.com/System/LivingRoom/View
0 голосов
/ 04 декабря 2009

Похоже, вы намереваетесь направить на контроллер на основе имени системы. Если это правильно, то вам просто нужно это:

routes.MapRoute("Systems",
                "Systems/{controller}/{action}"
                new{controller = "YourDEFAULTController", action = "YourDEFAULTAction"});

Обратите внимание, что третья строка устанавливает значения по умолчанию, указанные, если они НЕ включены в URL.

Учитывая маршрут выше, MVC будет маршрутизировать это:

http://sitename.com/Systems/LivingRoom/View

к методу действия View на контроллере LivingRoom. Однако это:

http://sitename.com/Systems/LivingRoom

приведет к методу YourDEFAULTAction на контроллере LivingRoom.

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

У меня была похожая проблема. Я использовал следующий маршрут.

       routes.MapRoute(
            "BlogSpecific",                                              // Route name
            "{blogSubFolder}/{controller}/{action}/{id}",                           // URL with parameters
            new { blogSubFolder = "", controller = "", action = "", id = "" }  // Parameter defaults
        );

blogSubFolder просто передается в действия моего контроллера в качестве параметра. Контроллер и действие работают так же, как обычно. Просто замените blogSubfolder с вашим параметром «System», и, надеюсь, это сработает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...