0

我正在尝试实施一种解决方案来更新用户控件显示的内容,而无需重新发布用户控件本身。UC 从外部文件获取 xml 作为其内容,而不是将内容存储在控件中,因此 xml 是重新发布的内容,而不是 UC。

问题是我还需要内容包含内联变量,例如 <% =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 回答