gpt4 book ai didi

asp.net-mvc - 我可以在与基本 Controller 具有相同签名的 ActionResult 上使用方法隐藏吗?

转载 作者:行者123 更新时间:2023-12-01 19:40:04 25 4
gpt4 key购买 nike

我有 2 个 Controller ,一个继承另一个。我需要覆盖基本 Controller 的 ActionResult,因为我需要更改代码以在 nopCommerce 插件中实现分页。但是,由于新的 ActionResult,我得到了 AmbiguousMatchException。

基础 Controller :

public class BaseController : Controller {
public ActionResult Category(int categoryId, CatalogPagingFilteringModel command)
{
//original action result code
}
}

带继承的客户 Controller

public class CustomController : BaseController {
public new ActionResult Category(int categoryId, CatalogPagingFilteringModel command)
{
// my pagination code with different model/view
}
}

路线信息:在这里,我删除了基本 Controller 的路由并添加了一个新路由以使用 CustomCatalog Controller 。

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: The current request for action 'Category' on controller type 'CustomCatalogController' is ambiguous between the following action methods: System.Web.Mvc.ActionResult Category(Int32, Nop.Web.Models.Catalog.CatalogPagingFilteringModel) on type Nop.Plugin.Common.Web.Controllers.CustomCatalogController System.Web.Mvc.ActionResult Category(Int32, Nop.Web.Models.Catalog.CatalogPagingFilteringModel) on type Nop.Web.Controllers.CatalogController]

编辑基本 Controller 位于应用程序的核心,而 CustomController 位于插件中,这意味着我无法修改基本 Controller 的类型。

最佳答案

如何在基本 Controller 中使用 virtual 并在派生 Controller 中使用 override 而不是 new

基础:

public virtual ActionResult Category(...) { }

派生:

public override ActionResult Category(...) { }

关于asp.net-mvc - 我可以在与基本 Controller 具有相同签名的 ActionResult 上使用方法隐藏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13461909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com