如何在插件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 AdminController
和Vendor
不存在,所以我假设你试图覆盖admin的供应商列表方法。
看起来像:
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
应该是您的插件组名称和插件名称。
希望这可以帮助 !
另一答案
在你的插件中哪个类实现了接口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 3.9 大波浪系列 之 路由扩展 [多语言Seo的实现]