在运行时从 XML 检索和处理服务器端值
本文关键字:处理 服务器端 检索 运行时 XML | 更新日期: 2023-09-27 18:36:22
我正在尝试实现一种解决方案来更新用户控件显示的内容,而无需重新发布用户控件本身。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>
试试这个:
<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 内容合并。定义文本控件以将内容写入页面。