Мое требование: мне нужно установить несколько маршрутов для одного метода управления/действия.Маршруты в ASP.NET MVC 5
Если пользователь вводит url http://localhost:xxxx/home/index, он будет нацелен на «индексный» метод действия «домашнего» контроллера.
Я также хочу, чтобы «http://localhost:xxxx/products» и «http://localhost:xxxx/categories» указывали на «индекс» действия метода «домашнего» контроллера.
Я смог добиться этого, добавив два маршрута «категории» и «продукты», как указано ниже, и он работает нормально.
routes.MapRoute(
name: "categories",
url: "categories",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "products",
url: "products",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Мой вопрос: есть ли способ объединить эти два маршрута «категории» и «продукты» в одном?
Короткий ответ: Нет. (И так как вы не имеете сегмент для '{ID}' в первых 2-х маршрутов, вы можете также удалить 'ID = UrlParameter.Optional') , Сказав, что вы можете создать ограничение маршрута, но, вероятно, этого не стоит. –
Регулярный фильтр для атрибута маршрута может быть вашим другом здесь, я смог сделать что-то очень похожее на него. Некоторая информация здесь: http://stackoverflow.com/questions/25077406/regex-in-route-attribute-restful-api-asp-net-web-api –
Было бы чисто, если бы вы могли пойти на маршрутизацию атрибутов (но не («Продукты»)] [Маршрут («Категории»)] Публичный индекс показателя активности() { return View(); (0) [Route ("Products")] } ' – Developer