C# Nopcommerce重写路由,通过CustomView引擎和Routeprovider否决核心目录控制器
在前面的问题中,我问了如何从Nop核心控制器CatalogController继承代码。有关问题的帖子,请参见 现在我继承了这个核心控制器的代码,但是现在我想让nopcommerce使用我的CatalogController而不是核心控制器。为此,我使用了CustomViewEnige和路由提供程序 添加新路线后:C# Nopcommerce重写路由,通过CustomView引擎和Routeprovider否决核心目录控制器,c#,asp.net-mvc,nopcommerce,route-provider,C#,Asp.net Mvc,Nopcommerce,Route Provider,在前面的问题中,我问了如何从Nop核心控制器CatalogController继承代码。有关问题的帖子,请参见 现在我继承了这个核心控制器的代码,但是现在我想让nopcommerce使用我的CatalogController而不是核心控制器。为此,我使用了CustomViewEnige和路由提供程序 添加新路线后: routes.MapLocalizedRoute("Nop.Web.Controllers.CatalogController", "{categ
routes.MapLocalizedRoute("Nop.Web.Controllers.CatalogController",
"{category}",
new { controller = "Catalog", action = "Category" },
new[] { "Nop.Plugin.Widgets.TryingNewProjectController.Controllers" });
我已经更改了我的路由提供程序代码,因此Nopcommerce现在可以看到我想要的路由,但现在我仍然得到错误:
控制器类型的当前操作请求“类别”
“CatalogController”在以下操作方法之间不明确:
类型上的System.Web.Mvc.ActionResult Category()
Nop.Plugin.Widgets.TryingNewProjectController.Controllers.CatalogController
类型上的System.Web.Mvc.ActionResult Category()
Nop.Web.Controllers.CatalogController System.Web.Mvc.ActionResult
目录(Int32,Nop.Web.Models.Catalog.CatalogPagingFilteringModel)
键入Nop.Web.Controllers.CatalogController
我不知道我做错了什么…我自己也能弄明白:)但对于其他刚起步的nopcommerce开发人员/正在起步的ASP.Net开发人员,以下是答案: 当你为一个控制器/动作创建一个新的路由时,你必须在你的新插件中为这个控制器/动作指定一个唯一的名称。这听起来很简单,但我花了很长时间才弄明白 这是我的旧代码,不起作用
routes.MapLocalizedRoute("Nop.Web.Controllers.CatalogController",
"{category}",
new { controller = "Catalog", action = "Category" },
new[] { "Nop.Plugin.Widgets.TryingNewProjectController.Controllers" });
此代码适用于:
routes.MapRoute("Nop.Web.Controllers.CatalogController.Category",
"{category}",
new { controller = "TryingNewProject", action = "Category" },
new[] { "Nop.Plugin.Widgets.TryingNewProjectController.Controllers.CatalogController" });