Plugins 如何在插件中覆盖路由

Plugins 如何在插件中覆盖路由,plugins,asp.net-mvc-5,routing,nopcommerce,Plugins,Asp.net Mvc 5,Routing,Nopcommerce,在我的MVC应用程序中,我有一个类似于Admin/Vendor的路由。在不更改此路由的情况下,我需要将同一路由指向另一个方法,例如CustomAdmin/CustomVendor 我试过了,但没有成功。有没有办法做到这一点。我目前的代码如下 原始方法: 公共类管理员控制器 { 公共行动结果供应商() { 返回视图(); } } 自定义方法: 公共类CustomAdminController { [路线(“管理员/供应商”)] 公共操作结果CustomVendor() { 返回视图(); } }

在我的MVC应用程序中,我有一个类似于
Admin/Vendor
的路由。在不更改此路由的情况下,我需要将同一路由指向另一个方法,例如
CustomAdmin/CustomVendor

我试过了,但没有成功。有没有办法做到这一点。我目前的代码如下

原始方法:

公共类管理员控制器
{
公共行动结果供应商()
{
返回视图();
}
}
自定义方法:

公共类CustomAdminController
{
[路线(“管理员/供应商”)]
公共操作结果CustomVendor()
{
返回视图();
}
}

在实现接口的插件类上,您可以轻松覆盖那里的路由。 同样,我的插件中有一个名为
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
或任何您想要使用的东西,将成为您开发插件时的路由url

。您必须将自定义路线添加到
RouteProvider

默认情况下,nopCommerce
AdminController
Vendor
不存在,因此我假设您试图覆盖admin的Vendor list方法

这看起来像:

公共部分类RouteProvider:IRoutProvider
{
公共作废登记处(路线收集路线)
{ 
var route=routes.MapRoute(“Plugin.GroupName.PluginName.CustomVendor”,
“管理员/供应商/列表”,
新建{controller=“CustomAdminController”,action=“CustomVendor”,orderIds=UrlParameter.Optional,area=“Admin”},
新[]{“Nop.Plugin.GroupName.PluginName.Controllers”});
route.DataTokens.Add(“区域”、“管理”);
路线。移除(路线);
路由。插入(0,路由);
}
公共整数优先级
{
得到
{
返回100;//路由优先级
}
}
}
旁注:
GroupName
PluginName
应该是您的插件组名和插件名


希望这有帮助

你想在插件中覆盖路由吗?@Div是的,我需要在我的插件中覆盖,你能给我们看看你插件的
RouteProvider
文件吗@Div我是nop的新手,nop管理员是否有任何指定的路由提供程序文件不用担心,是的(但不是管理员的特定文件),插件应该有
RouteProvider
(其中包含您的插件所有路由)文件。请参阅。在RouteProvider.cs文件中,您可以覆盖路由。您是否在
注册表项(RouteCollection routes)
函数中写入了部分代码??是的。但仍要路由到旧控制器操作通过键盘键入直接点击地址
Admin/Vendor
,然后让我知道发生了什么,而无需通过链接单击。