我需要从页面模板中的 PageHandler Header Controls 集合中删除一个对象。
我可以在小部件视图级别使用下面的脚本来执行此操作,但是我需要删除的那个还没有被添加,所以我需要在它被消耗之前移动它。
我能找到的唯一可访问的地方是在我的模板文件中 - 就在@Html.Section("head")
. 我正在尝试仅删除此模板的默认规范 URL(此站点中正在发生一些疯狂的路由内容......不要问)。
var pageHandler = this.ViewContext.HttpContext.Handler.GetPageHandler();
foreach (var c in pageHandler.Header.Controls)
{
if (c != null && c is System.Web.UI.HtmlControls.HtmlLink)
{
System.Web.UI.HtmlControls.HtmlLink mylink = (System.Web.UI.HtmlControls.HtmlLink)c;
if (mylink.Attributes["rel"] == "canonical")
{
pageHandler.Header.Controls.Remove(mylink);
}
}
}
当我尝试在模板文件中使用它时,<head>
标签pageHandler.Header
为空。
1 - 对于这个特定的模板级别,我是否以错误的方式访问这个对象?如果是这样,正确的对象引用是什么?
2 - 由于 Sitefinity 中的一些幕后页面构建顺序,它还没有设置吗?如果是这样,我可以/应该在哪里处理访问该对象?
3 - 其他事情完全发生了?
我不是在问如何修复空引用异常
我知道该对象为空,并且正在尝试在此级别的 Sitefinity 视图模型中找到该数据的位置。