我有一个调用其数据源子项的渲染。每个子项都在渲染字段中附加了一个渲染。 我在打电话
@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()
答案 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)