Мне нужно добавить один «путь» перед некоторыми контроллерами, чтобы уточнить их назначение.
Например, в настоящее время:
/news/create
, /news/edit
, /event/create
, /event/edit
,
Хотелось бы, чтобы их роутер мог быть
/request/news/create
, /request/news/edit
, /request/event/create
, /request/event/edit
Я попытался добавить следующеекод в RouteConfig.cs
routes.MapRoute(
name: "Api",
url: "request/{controller}/{action}/{id}",
defaults: new { id = UrlParameter.Optional }
);
Один из контроллеров EventController.cs
public class EventController : Controller{
[HttpPost]
public ActionResult Edit(int id, Events eventModel){
//code
}
[HttpPost]
public ActionResult Create(Events eventModel){
//code
}
}
Здесь я сталкиваюсь с проблемой:
/request/event/create
404 ошибка
/request/event/edit/1
работает!
/event/create
работает!
/event/edit/1
работает!
Итак, мой вопрос: почему /request/event/create
не работает и как это исправить?
Насколько я знаю, добавление [Route("request/event/create")]
выше действия Create может заставить его работать.
--------- Обновление --------
RouteConfig.cs
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Index", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Api",
url: "request/{controller}/{action}/{id}",
defaults: new { id = UrlParameter.Optional }
);
}
}