我有 2 个控制器,一个继承另一个。我需要从基本控制器覆盖 ActionResult,因为我需要更改代码以在 nopCommerce 插件中实现分页。但是,由于新的 ActionResult,我得到了一个 AmbiguousMatchException。
基本控制器:
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”的操作“Category”的请求在以下操作方法之间不明确: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) on type Nop.Web.Controllers.CatalogController]
编辑 基本控制器位于应用程序的核心,因为 CustomController 在插件中,这意味着我无法修改基本控制器的类型。