我有一个 Sitecore 7.1 网站,我正在尝试找出为博客实现标签搜索的最佳方法是什么。
理想情况下,我希望有一个像这样的网址:/tags/tag-goes-here
我的内容树中应该有一个 sitecore/content/home/tags 项目,以便我可以使用 Sitecore 编辑内容等。我希望像上面这样的所有路由都映射到该项目,并能够以某种方式将“tag-goes-here”参数获取到我的 Controller /渲染中。
我尝试过使用路线,但我不确定这是否是正确的方法。它映射到一个简单的 Controller ,但我可能走错了路。我为此添加了以下路线:
routes.MapRoute(
"Tags",
"tags/{tag}",
new
{
controller = "Tag",
action = "Index",
tag = UrlParameter.Optional,
});
它可以工作,但并不能完全达到我想要的效果。它只是在浏览器中呈现我的 View ,但我无法使用 Sitecore 添加任何呈现或内容,因为 Sitecore 中没有匹配的项目。在 Sitecore MVC 中解决这个问题的最佳方法是什么?
谢谢。
最佳答案
通过按原样指定路由并指定 Controller ,您实际上绕过了 Sitecore。请参阅 Sitecore MVC Developers Guide 的第 4.1 节
您可以使用通配符项目(Reusing and Sharing Data 文档的第 1.2.6 节)来处理标签,这将允许您像处理任何其他 Sitecore 项目一样处理项目并添加布局/渲染/规则等。
您可以在这里找到一些相关示例:Sitecore MVC Music Store ,这是一个 Sitecore 6.6 示例,但概念仍然相同。
您还可以查看 Wildcard Module但看看 source code我不确定它是否适用于 MVC,因为有一些 WebForms 特定代码,但它应该很容易修改。
关于sitecore - 将 Sitecore 路由映射到项目/ Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21498271/