使用Sitecore中的ItemRendering将参数传递给渲染

时间:2015-06-16 11:36:01

标签: sitecore rendering

我有一个调用其数据源子项的渲染。每个子项都在渲染字段中附加了一个渲染。 我在打电话

@Html.Sitecore().ItemRendering(item)

哪个有效。

但是我想将一些参数传递给孩子的渲染,所以我尝试了以下代码;

@Html.Sitecore().ItemRendering(item, new { Parameters = "active=1" })

但是当我调用@Html.Sitecore().CurrentRendering.Parameters["active"]

时,参数不会传递给子渲染

所以我尝试了@Html.Sitecore().ItemRendering(item, new { Active = 1 })。我在孩子渲染中再次调用它,但仍然没有运气。

有没有办法使用@Html.Sitecore().ItemRendering()

将参数传递给孩子

2 个答案:

答案 0 :(得分:5)

ItemRendering方法似乎没有正确处理属性(或正如人们所期望的那样!)。

解决方法是使用@Html.Sitecore().Rendering()代替。您可以使用与ItemRendering方法相同的方式使用此方法,并使用下面的解决方法。请注意,您应该设置" Renderers"数据源项的字段(或其模板标准值)而不是" Renderings"你提到的字段:

@Html.Sitecore().Rendering(item["__Renderers"], new {Datasource = item.ID, Message = "Hello World"})

在子渲染中,使用Properties属性,而不是Parameters

@Html.Sitecore().CurrentRendering.Properties["Message"]

答案 1 :(得分:2)

var viewData = new ViewDataDictionary();
viewData["active"] = "1";
Html.Sitecore().ItemRendering(ItemToRender, viewData);

在Item的渲染中,您可以像这样访问viewdata:

(ViewData["active"] != null && int.Parse(ViewData["active"].ToString()) == 1)