У меня есть 2 контроллера, один наследующий другой. Мне нужно переопределить ActionResult из базового контроллера, потому что мне нужно изменить код, чтобы реализовать разбиение на страницы в плагине для nopCommerce. Однако я получаю исключение AmbiguousMatchException из-за нового ActionResult.
Базовый контроллер:
public class BaseController : Controller {
public ActionResult Category(int categoryId, CatalogPagingFilteringModel command)
{
//original action result code
}
}
Контроллер клиента с наследованием
public class CustomController : BaseController {
public new ActionResult Category(int categoryId, CatalogPagingFilteringModel command)
{
// my pagination code with different model/view
}
}
Информация о маршруте: здесь я удаляю маршрут для базового контроллера и добавляю новый маршрут для использования контроллера CustomCatalog.
routes.Remove(routes["OriginalCategory"]);
routes.MapLocalizedRoute(
"OriginalCategory",
"Category/{categoryId}/{SeName}",
new { controller = "CustomCatalog", action = "Category", SeName = UrlParameter.Optional },
new { categoryId = @"\d+" },
new[] { "Nop.Plugin.Common.Web.Controllers" });
Затем я получаю исключение AmbiguousMatchException
[AmbiguousMatchException: текущий запрос действия «Категория» для типа контроллера «CustomCatalogController» неоднозначен для следующих методов действия: System.Web.Mvc.ActionResult Category (Int32, Nop.Web.Models.Catalog.CatalogPagingFilteringModel) для типа Nop. Plugin.Common.Web.Controllers.CustomCatalogController System.Web.Mvc.ActionResult Category (Int32, Nop.Web.Models.Catalog.CatalogPagingFilteringModel) для типа Nop.Web.Controllers.CatalogController]
ИЗМЕНИТЬ. Базовый контроллер находится в ядре приложения, а CustomController находится в подключаемом модуле, что означает, что я не могу изменить тип базового контроллера.