[英]nopCommerce 3.2 plugin isn't working on nopCommerce 3.3 after configuration
[英]Change URL Routing by overriding GenericPathRoute.cs in Plugin nopCommerce 3.3
我正在尝试创建一个将覆盖TopicsDetails.cshtml页面的插件。 我添加了这样一条路线:
routes.MapRoute("Nop.Plugin.Other.CustomTopic.ViewCustomTopic", "{SeName}",
new { controller = "CustomTopic", action = "TopicDetails", SeName = UrlParameter.Optional },
new[] { "Nop.Plugin.Other.CustomTopic.Controllers" });
这是将所有{SeName}传递给我的CustomTopicController。即使是产品SeName。
如果我添加此而不是旧版本:
routes.MapRoute("Nop.Plugin.Other.CustomTopic.ViewCustomTopic",
new { controller = "CustomTopic", action = "TopicDetails" },
new[] { "Nop.Plugin.Other.CustomTopic.Controllers" });
我收到一个错误,因为TopicDetails(int itemId)Action接收到一个未提供的整数,因为我们知道GenericPathRoutes.cs提供该整数。
我怎样才能覆盖GenericPathRoutes.cs的规则来做到这一点,这样只有SeName主题会命中我的Controller,或者有其他方式来做这种工作,或者甚至可以这样做?
最近我写了一篇文章,展示了如何覆盖本地化路由,我以TopicDetails视图为例。 有文章在这里 。 Inshort,您的路线提供者应如下所示;
public class RouteProvider : IRouteProvider
{
private const string NAMESPACES = "Nop.Plugin.Misc.Custom.Controllers";
private const string CONTROLLER = "MiscCustom";
public void RegisterRoutes(RouteCollection routes)
{
//Public Override
routes.MapGenericPathRoute("Plugin.Misc.Custom.GenericUrl",
"{generic_se_name}",
new { controller = "Common", action = "GenericUrl" },
new[] { NAMESPACES });
}
public int Priority
{
get { return Int32.Max; }
}
}
我不确定我是否理解你的问题可以通过添加id = UrlParameter.Optional在这里尝试任何id参数是可选的它不会抛出该错误
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.