Параметр маршрутизации ASP.NET MVC - PullRequest
0 голосов
/ 20 декабря 2011

шаблон маршрутизации asp.net mvc равен

 {"some_parameter/{controller}/{action}/{id}"}

Это допустимый формат, если some_parameter может быть нулевым или пустая строка

Ответы [ 2 ]

3 голосов
/ 20 декабря 2011

Я считаю, что вы хотели {some_parameter}/{controller}/{action}/{id} (обратите внимание на фигурные скобки вокруг "some_parameter"), и в этом случае он не должен быть нулевым или пустым, я думаю. Как вы думаете, ваш конечный URL может выглядеть так, чтобы он соответствовал маршруту в случае, если some_parameter пусто? «mysite.com//mycontroller/myaction/myid"?

Маршрутный движок просто соответствует шаблонам. Если вы хотите обработать как {some_parameter}/{controller}/{action}/{id}, так и {controller}/{action}/{id}, просто определите оба маршрута.

3 голосов
/ 20 декабря 2011

Редактировать

Я только что изменил порядок регистрации маршрута, чтобы он работал:

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new {
        controller = "home",
        action = "index",
        id = UrlParameter.Optional }
);

routes.MapRoute(
    "Default", // Route name
    "{some_parameter}/{controller}/{action}/{id}", // URL with parameters
    new {
        some_parameter = UrlParameter.Optional,
        controller = "home",
        action = "index",
        id = UrlParameter.Optional
    }
);

Они должны быть зарегистрированы в этом порядке. Кроме того, второй маршрут требует параметров id и some_parameter, иначе он никогда не будет вызван из-за маршрута перед ним. Даже если для параметров some_parameter и id задано необязательное значение, этого никогда не произойдет, поскольку маршрут до этого перехватит его, если он будет пустым.

...