如何在插件 nopcommerce 中覆盖路由
How to override route in a plugin 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();
}
}
在 class 实现接口 IRouteProvider
的插件上,您可以轻松地覆盖那里的路由。
同样,我的插件中有一个名为 RouteProvider
的 class,所以我实现了 abstract
函数 RegisterRoutes
并且它可以被
覆盖
routes.MapRoute("Plugin.Promotion.Combo.SaveGeneralSettings",
"Admin/Vendor",
new { controller = "CustomAdmin", action = "CustomVendor", },
new[] { "Nop.Plugin.Promotion.Combo.Controllers" }
);
此处 Plugin.Promotion.Combo
必须替换为您的插件 directory.And 使用 SaveGeneralSettings
或任何您想使用的东西将成为您的路线 url
在开发插件时。您必须将自定义路由添加到 RouteProvider
.
在默认情况下,nopCommerce AdminController
和 Vendor
不存在,所以我假设您正在尝试覆盖管理员的供应商列表方法。
看起来像:
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
}
}
}
旁注:GroupName
和 PluginName
应该是您的插件组名称和插件名称。
希望对您有所帮助!
我的 MVC 应用程序中有一个类似于 Admin/Vendor
的路由。在不改变这条路线的情况下,我需要将这条路线指向另一种方法,比如 CustomAdmin/CustomVendor
。
我尝试了属性路由,但没有成功。有什么办法可以做到这一点。我当前的代码如下
原始方法:
public class AdminController
{
public ActionResult Vendor()
{
return View();
}
}
自定义方法:
public class CustomAdminController
{
[Route("Admin/Vendor")]
public ActionResult CustomVendor()
{
return View();
}
}
在 class 实现接口 IRouteProvider
的插件上,您可以轻松地覆盖那里的路由。
同样,我的插件中有一个名为 RouteProvider
的 class,所以我实现了 abstract
函数 RegisterRoutes
并且它可以被
routes.MapRoute("Plugin.Promotion.Combo.SaveGeneralSettings",
"Admin/Vendor",
new { controller = "CustomAdmin", action = "CustomVendor", },
new[] { "Nop.Plugin.Promotion.Combo.Controllers" }
);
此处 Plugin.Promotion.Combo
必须替换为您的插件 directory.And 使用 SaveGeneralSettings
或任何您想使用的东西将成为您的路线 url
在开发插件时。您必须将自定义路由添加到 RouteProvider
.
在默认情况下,nopCommerce AdminController
和 Vendor
不存在,所以我假设您正在尝试覆盖管理员的供应商列表方法。
看起来像:
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
}
}
}
旁注:GroupName
和 PluginName
应该是您的插件组名称和插件名称。
希望对您有所帮助!