1

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

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

4

1 回答 1

3

正如Shriroop 所说,猜测您是否尝试直接访问渲染参数? Sitecore 渲染参数 - Alex Shyba 博客

如果您仍想访问参数并且直接<xsl:param name="paramName"/>在 XSL 中使用不起作用,请尝试将参数传递到代码中的呈现。这是未经测试的,因为我现在面前没有 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 中完全匹配,因为它区分大小写。

于 2013-11-19T02:20:39.507 回答