在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上访问会话对象,该布局可以访问页面的标题。
答案 0 :(得分:3)
我怀疑在渲染XSL渲染时向头部添加任何东西为时已晚。而且,唯一的选择可能是切换到sublayout并在Page_Load或其他东西中执行此操作。
无法证明我的答案 - 这只是一种直觉。这就是为什么+1问题并添加到收藏夹; - )
答案 1 :(得分:0)
将所有类放在一个静态CSS文件中可能会更好。 HTTP请求和CPU负载的额外开销使得很难证明动态加载CSS所带来的好处。