如何在插件nopcommerce中覆盖路由

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在插件nopcommerce中覆盖路由相关的知识,希望对你有一定的参考价值。

在我的MVC应用程序中,我有像Admin/Vendor这样的路线。在不改变这条路线的情况下,我需要将这条路线指向另一种方法,例如CustomAdmin/CustomVendor

我试过属性路由,但没有运气。有没有办法做到这一点。我目前的代码如下

原始方法:

public class AdminController
{
   public ActionResult Vendor()
    {
        return View();
    }
}

自定义方法:

public class CustomAdminController
{
    [Route("Admin/Vendor")]
    public ActionResult CustomVendor()
    {
        return View();
    }
}
答案

当你正在开发一个插件。您必须将自定义路线添加到RouteProvider

在默认情况下,nopCommerce AdminControllerVendor不存在,所以我假设你试图覆盖admin的供应商列表方法。

enter image description here

看起来像:

public partial class RouteProvider : IRouteProvider
{
    public void RegisterRoutes(RouteCollection routes)
    { 
        var route = routes.MapRoute("Plugin.GroupName.PluginName.CustomVendor",
                                     "Admin/Vendor/List",
                                      new { controller = "CustomAdminController", action = "CustomVendor", orderIds = UrlParameter.Optional, area = "Admin" },
                                      new[] { "Nop.Plugin.GroupName.PluginName.Controllers" });
        route.DataTokens.Add("area", "admin");
        routes.Remove(route);
        routes.Insert(0, route);
    }
    public int Priority
    {
        get
        {
            return 100; // route priority 
        }
    }
}

附注:GroupNamePluginName应该是您的插件组名称和插件名称。

希望这可以帮助 !

另一答案

在你的插件中哪个类实现了接口IRouteProvider,你可以轻松覆盖那里的路由。同样我在我的插件中有一个名为RouteProvider的类,所以我已经实现了abstract函数RegisterRoutes并且它可以被覆盖

routes.MapRoute("Plugin.Promotion.Combo.SaveGeneralSettings",
                 "Admin/Vendor",
                 new { controller = "CustomAdmin", action = "CustomVendor", },
                 new[] { "Nop.Plugin.Promotion.Combo.Controllers" }
            );

这里Plugin.Promotion.Combo必须由你的插件目录替换。并使用SaveGeneralSettings或任何你想要使用的东西,这将是你的路线网址

以上是关于如何在插件nopcommerce中覆盖路由的主要内容,如果未能解决你的问题,请参考以下文章

如果插件不可用,如何将新支付网关集成到 [NopCommerce 3.10]?

清单项目,客户NopCommerce

覆盖部分类中的虚拟方法

nopCommerce 3.9 大波浪系列 之 路由扩展 [多语言Seo的实现]

nopCommerce 3.9 大波浪系列 之 路由扩展 [多语言Seo的实现]

NopCommerce:如何将此网关的返回字段映射到 Nop 的预期?