我想覆盖搜索控制器。当我尝试安装插件时,我得到一个错误异常,即为名为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;
}
}
答案 0 :(得分:2)
您可以像这样覆盖您的路线:
当您覆盖路线时,您应该使用覆盖本地化路线的MapLocalizedRoute
(非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
希望这有帮助!
答案 1 :(得分:1)
可能是您重命名项目以便更改程序集的文件名,您可以有两个版本。
所以从bin文件夹中删除旧的.dll并构建你的项目。