У меня есть веб-приложение, построить с asp.net MVC 4. Я хочу иметь следующие 3 вида маршрутов:asp.mvc 4 больше маршрутов
- /действие
- /действие/ID
- /ID/ID2
В global.asax я изменил маршруты, как это следующим образом:
routes.MapRoute(
name: "Without Action",
url: "{id}/{id2}",
defaults: new { controller = "Home", action = "City_Category" },
namespaces: new[] { "Namespace.Controllers" }
);
routes.MapRoute(
name: "Without Controller",
url: "{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "Namespace.Controllers" }
);
Но когда я пытаюсь {действие}/{id}, он переходит к первому маршруту, определенному в global.asax. Работает только в том случае, если url {action} или {id}/{id2}.
Как я могу сделать все 3 маршрута?
Спасибо!
{id} и {id2} будет строка – Alex
Любая уникальная вещь о них, которую может распознать регулярное выражение? – statue
В этом случае маршрутизатор не может отличить, является ли строка, которую вы передаете, идентификатором или действием. То, что вы можете сделать, используя тот же метод в этом ответе, ограничивает маршрут {action}/{id} подмножеством строки, например: 'new {action = @" [Index | Edit | Create] "}' , Не забудьте поставить его выше другого, потому что они оцениваются по порядку ... – Tallmaris