加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 07:09:35 所属栏目:asp.Net 来源:网络整理
导读:我正在使用XElement对象在ASP.NET页面的代码隐藏中构建一些 HTML. 我可能会或者可能不会像我一样向这个XElement添加一些XAttributes,方式如下: var elmnt = new XElement("div",new XAttribute("id","myDiv"),); 现在,如果我想在myDiv中添加一些包含HTML的
我正在使用XElement对象在ASP.NET页面的代码隐藏中构建一些 HTML.

我可能会或者可能不会像我一样向这个XElement添加一些XAttributes,方式如下:

var elmnt = new XElement("div",new XAttribute("id","myDiv"),);

现在,如果我想在myDiv中添加一些包含HTML的内容,那么XElement会自动转义,在我的情况下,这是不可取的.

所以,如果我有:

var elmnt = new XElement("div","<span id='content'>hello world</span>"
     );

然后使用以下代码将其渲染为Placeholder对象:

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 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);
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读