在3.8中覆盖nopcommerce中插件的默认方法路由

时间:2016-10-07 08:08:00

标签: asp.net asp.net-mvc nopcommerce

我想覆盖搜索控制器。当我尝试安装插件时,我得到一个错误异常,即为名为Catalog的控制器找到多个类型。

  

发现多个类型与名为'目录'的控制器匹配。如果为此请求提供服务的路由(' AdvanceSearch')未指定名称空间来搜索与请求匹配的控制器,则会发生这种情况。如果是这种情况,请通过调用' MapRoute'的过载来注册此路线。采用'命名空间的方法'参数。

我的路线优先级最高(100)。

public void RegisterRoutes(RouteCollection routes)
    {
        // Product Search,
        routes.MapRoute("Plugin.Misc.Twigoh.Search",
         "Search",
         new { controller = "Catalog", action = "Search" },
         new[] { "Nop.Plugin.Misc.Twigoh.Search.Controllers" });


    }
    public int Priority
    {
        get
        {
            return 100;
        }
    }

2 个答案:

答案 0 :(得分:2)

您可以像这样覆盖您的路线:

当您覆盖路线时,您应该使用覆盖本地化路线的MapLocalizedRouteMapRoute )。在这里,您尝试定义已定义的路径。

此处不要以这种方式使用MapRoute MapLocalizedRoute

routes.MapLocalizedRoute("Plugin.Misc.Twigoh.Search",
                            "search/",
                            new { controller = "Catalog", action = "Search" },
                            new[] { "Nop.Plugin.Misc.Twigoh.Search.Controllers" });

修改

  

我想要相同的路由和功能,但默认控制器不能   “/”搜索功能略有不同

/search是产品搜索的默认路线,您可以在Nop.Web > Infrastructure > RouteProvider.cs

中看到

希望这有帮助!

答案 1 :(得分:1)

可能是您重命名项目以便更改程序集的文件名,您可以有两个版本。

所以从bin文件夹中删除旧的.dll并构建你的项目。