我有2個控制器,一個繼承另一個。我需要重寫基本控制器的ActionResult,因爲我需要更改代碼以在nopCommerce的插件中實現分頁。但是,由於新的ActionResult,我得到AmbiguousMatchException。我可以使用隱藏在與基本控制器具有相同簽名的ActionResult上的方法嗎?
基本控制器:
public class BaseController : Controller {
public ActionResult Category(int categoryId, CatalogPagingFilteringModel command)
{
//original action result code
}
}
客戶控制器W /繼承
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上型 Nop.Plugin.Common.Web.Controllers.CustomCatalogController System.Web.Mvc.ActionResult類別(的Int32, Nop.Web類別(的Int32, Nop.Web.Models.Catalog.CatalogPagingFilteringModel)。 Models.Catalog.CatalogPagingFilteringModel)上型 Nop.Web.Controllers.CatalogController]
EDIT 基部控制器駐留在應用程序,其中作爲CustomController是在插件意味着我不能修改的核心基本控制器的類型。
不幸的是我不能改變基本ActionResult的類型,因爲它是核心的一部分而不是插件的一部分。 –