我有一个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中处理此问题的最佳方法是什么?
感谢。
答案 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特定代码,但它应该很容易修改