我需要从我的子布局中以编程方式获取渲染参数。目前我这样做:
var sublayout = ((Sublayout)this.Parent);
//Get all rendering
var renderings = Sitecore.Context.Item.Visualization.GetRenderings(Sitecore.Context.Device, true);
//Get the first rendering that matches the current sublayout's path
var sublayoutRendering = renderings.FirstOrDefault(r => r.RenderingItem.InnerItem["Path"] == sublayout.Path);
if (sublayoutRendering != null)
Response.Write(sublayoutRendering.RenderingItem.Parameters);
这个解决方案来自这个问题并且完美地工作,直到我在页面上有两个相同类型的子布局。当这种情况发生时,显然总是返回与两个renderings.FirstOrDefault(r => r.RenderingItem.InnerItem["Path"] == sublayout.Path);
子布局的子布局路径匹配的第一个渲染参数。
我怎样才能区分它们?我看不到任何东西可以用来将它们绑在一起!
编辑:
为了清楚起见,我在Presentation > Details中添加了我的子布局,然后当我单击我的控件时,我在“控件属性”窗口中设置了字段。我有一个名为 Module Source 的字段,它总是返回相同的 - 它总是填充为顺序中最高的一个。每个子布局的值肯定不同,但我无法从渲染中获取它们。