我正在使用 XElement 对象在 ASP.NET 页面的代码隐藏中构建一些 HTML。
我可能会也可能不会按以下方式向此 XElement 添加一些 XAttributes:
var elmnt = new XElement("div",
new XAttribute("id", "myDiv"),
);
现在,如果我想将一些内容添加到包含 HTML 的 myDiv 中,XElement 会自动转义它,在我的情况下,这是不需要的。
如果我有:
var elmnt = new XElement("div",
new XAttribute("id", "myDiv"),
"<span id='content'>hello world</span>"
);
然后我使用以下代码将其呈现为占位符对象:
myPlaceholder.Controls.Add(new System.Web.UI.WebControls.Literal { Text = elmnt.CreateNavigator().OuterXml });
当页面加载时,源代码显示 elmnt 中的内部内容已被转义,并且在页面源代码中具有以下格式:
<span id='content'>hello world</span>
鉴于我在这里编译的 XML 是有效的 HTML,并且内部内容也是有效的 HTML,我如何才能告诉 XElement 父对象不转义内部内容?如何保留其原始格式?
最佳答案
var elmnt = new XElement("div",
new XAttribute("id", "myDiv"),
new XRaw("<span id='content'>hello world</span>")
);
public class XRaw : XText
{
public XRaw(string text):base(text){}
public XRaw(XText text): base(text){}
public override void WriteTo(System.Xml.XmlWriter writer)
{
writer.WriteRaw(this.Value);
}
}
关于asp.net - 如何避免 System.Xml.Linq.XElement 转义 HTML 内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5613978/