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

时间:2011-01-21 10:26:52

标签: 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类来拾取并添加到会话中。然后可以在布局中的Page_Load上访问会话对象,该布局可以访问页面的标题。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

将所有类放在一个静态CSS文件中可能会更好。 HTTP请求和CPU负载的额外开销使得很难证明动态加载CSS所带来的好处。