Sitecore:如何从嵌套的XSLT呈现中引用子布局的呈现参数

时间:2013-11-18 20:14:04

标签: xslt sitecore sublayout

我有一个渲染参数模板,分配给子布局(.ascx)。在该子布局的标记内,我使用sitecore控件引用XSLT渲染。

如何从嵌套的XSLT渲染中引用渲染参数字段?

1 个答案:

答案 0 :(得分:3)

正如Shriroop所说,猜测你是否尝试直接访问渲染参数? Sitecore Rendering Parameters - Alex Shyba blog

如果您仍想访问参数并直接在XSL中使用<xsl:param name="paramName"/>不起作用,请尝试将参数传递给代码呈现。 这是未经测试的,因为我现在面前没有Sitecore实例。

你的静态绑定控件应该包含在ascx中,你可以在Parameters属性中将它们设置为'key = value'对:

<sc:XslFile runat="server" ID="scRendering" Parameters="param1=abc&param2=xyz" Path="/path/to/rendering.xslt" />

或来自.cs文件中的代码:

// statically
scRendering.Parameters = "param1=abc&param2=xyz";

// using parameters from parent control
Sublayout sublayout = Parent as Sublayout;
scRendering.Parameters = sublayout.Parameters;   

您现在应该可以访问XSL中的参数:

<xsl:param name="param1"/>
<xsl:param name="param2"/>

<xsl:value-of select="$param1" />
<xsl:value-of select="$param2" />

我个人将XLST转换为ASPX,你可以将它绑定为标准的ASP.Net控件,从代码隐藏传递你需要的参数(或那些参数的对象)。您仍然可以从代码访问Sitecore Context和所需的所有其他Sitecore API功能。最好的方法是在控件中添加另一个占位符,并通过Sitecore界面添加渲染(或在__Standard Values中为该模板添加)并将参数模板分配给渲染 - 只有在必须设置渲染参数两次,每次控制一次,但您可以继续使用XSL并保持灵活性。

编辑:请注意,不要在渲染参数模板中的字段名称中使用空格,并确保名称在xslt 完全中匹配,因为它区分大小写。