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

Car*_*mas 5 rendering sitecore

我有一个渲染,称其数据源为子.每个子项都在渲染字段中附加了一个渲染.我在打电话

@Html.Sitecore().ItemRendering(item)
Run Code Online (Sandbox Code Playgroud)

哪个有效.

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

@Html.Sitecore().ItemRendering(item, new { Parameters = "active=1" })
Run Code Online (Sandbox Code Playgroud)

但是当我调用时,参数不会传递给子渲染 @Html.Sitecore().CurrentRendering.Parameters["active"]

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

有没有办法将参数传递给子进程使用 @Html.Sitecore().ItemRendering()

Mat*_*ser 5

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

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

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

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

@Html.Sitecore().CurrentRendering.Properties["Message"]
Run Code Online (Sandbox Code Playgroud)


Jan*_*ler 2

var viewData = new ViewDataDictionary();
viewData["active"] = "1";
Html.Sitecore().ItemRendering(ItemToRender, viewData);
Run Code Online (Sandbox Code Playgroud)

在项目的渲染中,您可以像这样访问视图数据:

(ViewData["active"] != null && int.Parse(ViewData["active"].ToString()) == 1)
Run Code Online (Sandbox Code Playgroud)