xslt - 从 Sitecore 中的 Xslt 辅助函数类修改页面控件

标签 xslt sitecore

在 xslt 渲染中,我调用以下内容

<xsl:value-of select="di:inject()"/>

相应的类获取当前页面对象并尝试修改页面头部

public class XslHelper : Sitecore.Xml.Xsl.XslHelper
{
    public void inject()
    {
        Page page = HttpContext.Current.Handler as Page;

        // page.GetType().FullName tells me that I have successfully got the reference

        page.Header.Controls.Add(new HtmlLink { Href = "/style.css" });
    }
}

但是标题没有得到更新?为什么会这样,还有其他方法可以达到同样的效果吗?

编辑: 我们最终扩展了 XslRender 模板并在其中存储依赖项,然后可以通过重写 renderLayout 管道中的 InsertRenderings 类来获取并添加到 session 中。然后可以在布局中的 Page_Load 上访问 session 对象,它可以访问页面的标题。

最佳答案

我怀疑在渲染 XSL 渲染时向头部添加任何东西为时已晚。而且,唯一的选择可能是切换到子布局并在 Page_Load 或其他内容中执行此操作。

无法证明我的答案 - 这只是一种直觉。这就是为什么对问题 +1 并添加到收藏夹的原因 ;-)

关于xslt - 从 Sitecore 中的 Xslt 辅助函数类修改页面控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4757685/

相关文章:

xml - 使用 XSLT 合并和重组 XML 文件

xml - 获取两个数字之间的属性值

visual-studio-2013 - 配置 Unicorn 的序列化位置,以便将项目添加到 Visual Studio 解决方案

c# - 错误的目标生成包 TDS Sitecore

mysql - Sitecore 数据库 : get url for content tem from GUID

xml - XSLT 特殊字符

python - 从 XML 内容生成静态 HTML 站点

sitecore - 如何生成自定义唯一ID

sitecore - 使用 sitecore 查询检索项目

javascript - XSL 在 IE 中处理片段