asp.net - 如何避免 System.Xml.Linq.XElement 转义 HTML 内容?

标签 asp.net html escaping xelement

我正在使用 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 中的内部内容已被转义,并且在页面源代码中具有以下格式:

&lt;span id='content'&gt;hello world&lt;/span&gt;

鉴于我在这里编译的 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/

相关文章:

asp.net - 调试时编辑源代码

asp.net - 如何在 asp.net WebForms 中实现 Post/Redirect/Get 模式?

c# - c#中的字符串插入问题

javascript - 使用 webrtc 拍照

html - 尝试创建标签式、弹出式、上升式、页脚

r - 在 R 中有效地将反斜杠转换为正斜杠

c# - 自定义 ASP.NET 控件中的 Begin/EndRequestHandler 多个处理程序

jquery - 如何制作一个包含这样分组行的表格?

php - 清理所有已发布字段的正确方法?

javascript - 在 Javascript 中转义错误消息