我的MVC应用程序中有Admin/Vendor
之类的路由。在不改变这条路线的情况下,我需要将同一路线指向另一种方法CustomAdmin/CustomVendor
。
我尝试了属性路由,但没有运气。有没有办法做到这一点。我目前的代码如下:
原始方法:
public class AdminController
{
public ActionResult Vendor()
{
return View();
}
}
自定义方法:
public class CustomAdminController
{
[Route("Admin/Vendor")]
public ActionResult CustomVendor()
{
return View();
}
}
答案 0 :(得分:2)
正在开发插件。您必须将自定义路线添加到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
应该是您的插件组名称和插件名称。
希望这有帮助!
答案 1 :(得分:1)
在您的插件中,哪个类实现了接口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
或您要使用的任何内容将是您的路线网址