0

ユーザー コントロール自体を再公開せずに、ユーザー コントロールの表示内容を更新するソリューションを実装しようとしています。UC は、コンテンツをコントロールに格納するのではなく、コンテンツとして外部ファイルから xml を取得するため、UC の代わりに xml が再発行されます。

問題は、コンテンツに <% =myvariable %> などのインライン変数を含める必要があることです。xml を取得し、それをテキストとして扱う代わりに実行時に実行する方法はありますか?

以下は、ページ上のコードの全範囲ではなく、この問題に具体的に関連する基本のみを含む初歩的な例ですが、私が求めていることを明らかにするのに十分であることを願っています. 「Response.Write(xmlcontent);」の代わりに 実行時にページに「ネイティブ」であるかのように実行する取得 xml の値を取得し、そのインライン変数を処理する方法はありますか?

ユーザーコントロール:

<script runat="server">
string xmlcontent = "";
protected override void OnLoad(EventArgs e)
{
    try
    {
        XmlDocument doc = new XmlDocument();
        doc.Load(Server.MapPath("/usercontrols/xml/test.xml"));
        xmlcontent = doc.SelectSingleNode("content").InnerText;
    }

    catch
    {

    }
}

</script>

<%if (!string.IsNullOrEmpty(xmlcontent))

 {
     Response.Write(xmlcontent);
 } %>

XML:

<content>
<![CDATA[<div>This is the content. The next word is a C# variable <% =variabletest %>.</div>]]>
</content>
4

1 に答える 1

0

これを試して :

<script runat="server">
        string xmlcontent = "";
        protected override void OnLoad(EventArgs e)
        {
            try
            {
                System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
                doc.Load(Server.MapPath("/usercontrols/xml/test.xml"));
                ltrl.Text = String.Format(doc.SelectSingleNode("content").InnerText, variabletest);
            }

            catch (Exception ex)
            {
                ltrl.Text = ex.Message;
            }
        }
 </script>


<div>
    <asp:Literal runat="server" ID="ltrl" />
</div>

String.Format を使用して var 値を渡し、それを xml コンテンツとマージできます。ページにコンテンツを書き込むリテラル コントロールを定義します。

于 2012-06-06T18:59:31.080 に答える