在 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/