为什么我在Sitecore 9中的路线不起作用?

时间:2018-11-19 15:05:10

标签: model-view-controller sitecore

尝试使用以下文档在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。

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中的管道定义的。 希望这个答案对您有帮助。