【问题标题】:override default method route from plugin in nopcommerce in 3.8在 3.8 中覆盖 nopcommerce 中插件的默认方法路由
【发布时间】:2016-10-07 08:07:59
【问题描述】:

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

找到了与名为“目录”的控制器匹配的多种类型。如果为该请求提供服务的路由(“AdvanceSearch”)未指定命名空间来搜索与请求匹配的控制器,则可能会发生这种情况。如果是这种情况,请通过调用采用“namespaces”参数的“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;
        }
    }

【问题讨论】:

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


【解决方案1】:

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

当你覆盖路由时,你应该使用 MapLocalizedRoute(not MapRoute) 覆盖本地化路由。在这里,您正在尝试定义已经定义的路线。

这里不要用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看到

希望这会有所帮助!

【讨论】:

  • 不,我想要相同的路由和功能,但默认控制器不能有“/”搜索功能有点不同
  • 你在使用MapLocalizedRoute吗?不要使用MapRoute
  • 找到了多个与名为“目录”的控制器匹配的类型。如果为该请求提供服务的路由(“AdvanceSearch”)未指定命名空间来搜索与请求匹配的控制器,则可能会发生这种情况。如果是这种情况,请通过调用带有“namespaces”参数的“MapRoute”方法的重载来注册此路由。
  • 是的,将 mapRoute 更改为 MapLocalizedRoute
【解决方案2】:

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

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

【讨论】:

猜你喜欢
  • 2017-05-24
  • 2011-03-31
  • 2023-04-01
  • 1970-01-01
  • 2017-01-17
  • 2019-09-04
  • 2017-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多