У меня есть базовый проект и разные наследующие проекты. Базовый проект имеет контроллеры, которые я иногда хочу наследовать и переопределять (частично).
Базовый проект:
public virtual ActionResult Index(string filter = "", int page = 1)
Подпроект:
public override ActionResult Index(string filter = "", int page = 1)
Теперь я изменил routeConfig, чтобы маршрутизация отображалась на логику из правильного пространства имен.
context.MapRoute(
"Routename",
"AreaName/{controller}/{action}/{id}",
new { controller = "ControllerName", action = "Index", id = UrlParameter.Optional },
new string[] { "ProjectName.Areas.AreaName.SpecificControllers"}
);
Однако я хочу, чтобы новые добавленные маршруты брались из конкретного проекта, если они там существуют. Те, которые не существуют, должны быть взяты из контроллера базового проекта. (Конкретный контроллер в основном начинается пустым и содержит только методы, когда желательно переопределение). Чтобы попытаться реализовать эту функциональность, я добавил другой проект в маршрутизацию здесь:
context.MapRoute(
"Routename",
"AreaName/{controller}/{action}/{id}",
new { controller = "ControllerName", action = "Index", id = UrlParameter.Optional },
new string[] { "ProjectName.Areas.AreaName.SpecificControllers", "ProjectName.Areas.AreaName.GenericControllers"}
);
Однако это, очевидно, приводит к следующей ошибке:
Multiple types were found that match the controller named 'MethodName'. This can happen if the route that services this request ('CRM/{controller}/{action}/{id}') does not specify namespaces to search for a controller that matches the request. If this is the case, register this route by calling an overload of the 'MapRoute' method that takes a 'namespaces' parameter.
The request for 'MethodName' has found the following matching controllers:
ProjectName.Areas.AreaName.SpecificControllers.ControllerName
ProjectName.Areas.AreaName.GenericControllers.ControllerName
Есть ли способ реализовать это так, чтобы моя маршрутизация всегда сначала смотрела на конкретный контроллер, а только на общий контроллер, если он не может найти метод в конкретном контроллере?