无法获得头部的内部内容,因为内容不是文字的。 - 试图附加到标题

时间:2012-07-23 17:24:23

标签: c# asp.net .net header

我有一个带头的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;

3 个答案:

答案 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不起作用