我有一个带头的aspx页面
<head runat="server" id="head">
<title></title>
</head>
现在我正在处理的网站是从xml文件中提取信息,我想从xml文件中取一个节点并将其附加到head部分。
<head runat="server" id="head">
<title></title>
<script></script> // comes from the xml file
</head>
然而,当我尝试其中任何一个时。
protected void Page_Init(object sender, EventArgs e)
{
this.Page.Header.InnerHtml += xml.Header; // errors out
this.Page.Header.InnerHtml = this.Page.Header.InnerHtml + xml.Header; // errot ut
}
错误
System.Web.HttpException未被用户代码Message = Can not处理 得到头部的内在内容,因为内容不是文字。
如果我这样做
protected void Page_Init(object sender, EventArgs e)
{
this.Page.Header.InnerHtml = xml.Header;
}
一切都很好。
如果我这样做
<head runat="server" id="head">
// removed the title tag so now nothing is in head
</head>
然后执行此操作
protected void Page_Init(object sender, EventArgs e)
{
this.Page.Header.InnerHtml += xml.Header; // works
this.Page.Header.InnerHtml = this.Page.Header.InnerHtml + xml.Header; //works
}
有效。所以我不知道为什么当头部内有标签时它会失败。
如果我也尝试从头部获取内容,我也会得到相同的错误
var a = this.Page.Header.InnerHtml;
var a = this.Page.Header.InnerText;
答案 0 :(得分:1)
此问题可能是由于头标记在其中使用脚本标记进行呈现的方式
也可能是页面渲染速度太快
我建议您在页面获取Page_PreRender事件时尝试在head标记中插入脚本标记
答案 1 :(得分:1)
您可以使用(VB)完成此操作:
Dim sw As New StringWriter()
Dim w As New HtmlTextWriter(sw)
NameOfYourElementID.RenderControl(w)
Dim s As String = sw.GetStringBuilder().ToString()
现在你可以使用变量's'来做任何工作。
不要忘记导入System.IO以使其正常工作。
答案 2 :(得分:0)
问题出在使用母版页时。 this.Page.Header.InnerHtml不起作用