尝试使用以下文档在Sitecore 9中应用自定义路由: https://doc.sitecore.net/sitecore_experience_platform/developing/developing_with_sitecore/mvc/use_mvc_routing。 但是没有运气,最终显示在404页上。似乎已经注册了路由,但是参数有问题:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
name: "Product",
url: "product-offering/{category}/{product}",
defaults: new { scItemPath = "product-offering/{product}", scKeysToIgnore = new string[] { "category" } });
}
也许有人在Sitecore 9中遇到了这个问题,因为这段代码适用于Sitecore 8.2。
答案 0 :(得分:0)
就我而言,这里的问题是项目名称中的破折号。 在“ App_Config / Sitecore.config”文件中,有以下配置:
替换模式=“ on” find =“” replaceWith =“-” 。
如您所见,名称是有意修改的。启用此设置后,将不允许包含带有短划线的名称的内容项。好吧,它们是允许的,但这毫无意义:
1)假设您有一个名为“ product-offering”的商品,其名称中带有短划线。
2)为该项目生成链接时,根据上述设置,所有空格都用破折号代替,因此URL变为:http://hostname/product-offering(在这种情况下,保留相同的名称)。
3)当请求此类URL时,为了检索相关内容项,将执行相反的名称转换-根据上述设置,短划线用空格代替。名称“提供产品”变为“提供产品” 4)没有名称为“ product offer”的商品,因此会收到404。
因此,我看到了两种方法来解决所报告的行为:
->用名称中的空格替换破折号
->或注释掉上述Sitecore.config设置。
答案 1 :(得分:-1)
在Sitecore中,不使用Visual Studio route.config文件,因为在sitecore中,所有路由都是根据Views文件夹中web.config中的管道定义的。 希望这个答案对您有帮助。