2

頭のある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=内容がリテラルではないため、headの内部コンテンツを取得できません。

私がこれをするなら

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;
4

3 に答える 3

1

この問題は、headタグがscriptタグとともにレンダリングされる方法が原因である可能性があります

また、ページのレンダリングが速すぎる可能性もあります

ページがPage_PreRenderイベントを取得している間に、スクリプトタグをheadタグに挿入してみることをお勧めします

于 2012-07-23T17:40:21.567 に答える
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をインポートすることを忘れないでください。

于 2012-11-12T14:33:38.060 に答える
0

問題は、MasterPageを使用する場合です。this.Page.Header.InnerHtmlが機能しない

于 2013-03-27T21:50:34.780 に答える