У меня есть контроллер запросов, который выходит из-под контроля, и я хочу разделить действия на нескольких контроллерах при сохранении чистого URL-адреса. Я пытаюсь экспериментировать с маршрутизацией, но безуспешно. Я прочитал несколько примеров и руководств по маршрутизации, но, хотя я понимаю примеры, ничто, кажется, не относится к моему делу, и я чувствую себя неразумным. Я хочу, чтобы URL-адрес Requests/Approval
обрабатывался на моем ConfirmController вместо моего RequestController, поэтому я написал следующее.MVC-маршрутизация против частичного класса
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Approval",
"Request/{controller}/{action}",
new { controller = "Approval", action="Index", id = "" }
);
}
Но это не работает. Зачем? У меня есть папка в моих представлениях под названием «Утверждение», и там есть файл с именем Index.cshtml
. Как мне закодировать MapRoute?
Редактировать
Я добавил все маршруты у меня
Можете ли вы показать заказ, на котором вы сопоставляете другие маршруты? Возможно, другой маршрут соответствует одному и тому же запросу. – awbergs
У меня только стандартный маршрут «из коробки», иначе. Я обновил вопрос, чтобы вы могли видеть функцию «RegisterRoutes». –
Одна вещь, которую следует учитывать при маршрутизации, заключается в том, что маршруты оцениваются по порядку, и как только маршрут совпадает с тем, который используется, поэтому по умолчанию сначала его не следует искать. Вы можете указать маршрут по названию, которое в данном случае является «одобрением» – Brian