将Sitecore路由映射到项目/控制器

时间:2014-02-01 12:50:56

标签: sitecore sitecore7 sitecore-mvc sitecore7.1

我有一个Sitecore 7.1网站,我正在试图找出实现博客标记搜索的最佳方式。

理想情况下,我希望有这样的网址: / tags / tag-goes-here

我的内容树中应该有一个sitecore / content / home / tags项目,因此我可以使用Sitecore编辑内容等。我希望像上面这样的所有路由都映射到该项,并能够将“tag-goes-here”参数放入我的控制器/以某种方式呈现。

我试过使用路线,但我不确定这是不是正确的做法。它映射到一个简单的控制器,但我可能在错误的轨道上。我为此添加了以下路线:

routes.MapRoute(
            "Tags",
            "tags/{tag}",
          new
          {
              controller = "Tag", 
              action = "Index", 
              tag = UrlParameter.Optional, 
          });

它有效,但并不完全符合我的要求。它只是在浏览器中呈现我的视图但我不能使用Sitecore向其添加任何渲染或内容,因为Sitecore中没有匹配的项目。在Sitecore MVC中处理此问题的最佳方法是什么?

感谢。

1 个答案:

答案 0 :(得分:4)

通过指定路径并指定控制器,您实际上绕过Sitecore。请参阅Sitecore MVC Developers Guide

的第4.1节

您可以使用通配符项(Reusing and Sharing Data文档的第1.2.6节)来处理标记,这样您就可以像处理任何其他Sitecore项一样处理Item并添加布局/渲染/规则等。 / p>

你可以在这里找到一些相关的例子:Sitecore MVC Music Store,这是Sitecore 6.6的例子,但概念仍然相同。

您还可以查看Wildcard Module,但查看source code我不确定它是否适用于MVC,因为有一些WebForms特定代码,但它应该很容易修改