我正在使用XElement对象在ASP.NET页面的代码隐藏中构建一些HTML。如何避免System.Xml.Linq.XElement转义HTML内容?
我可能还是有些XAttributes我走,以下列方式可能不会添加到此的XElement:
var elmnt = new XElement("div",
new XAttribute("id", "myDiv"),
);
现在,如果我想添加一些内容到myDiv包含HTML中, 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父对象而不是转义内部内容?我怎样才能以原生格式保留它?
HtmlTextWriter类被标记为'MustInherit',所以凭借我有限的知识,我不确定如何最好地将HtmlTextWriter实现到我的XElement对象中。我知道这是一个很大的问题,但是你能否提供一个简短的例子,说明如何将一个HtmlTextWriter对象转换成( hello world'')? – awj 2011-04-10 19:21:53
我还应该提一下,我很喜欢使用XElement类,因为我使用的定制缓存接受XElements,但我不确定它是否会接受HtmlTextWriter的实例。 另外,你是否建议我用HtmlTextWriter替换整个XElement,而不是使用它来简单地包含内部HTML? – awj 2011-04-10 19:31:40
@awj查看我的更新后的使用情况。我不明白你在说什么MustInherit,但无论如何,这个类是公开的,已经实现。我建议为了构建html,HtmlTextWriter比XElement更简单和强大。 XElement更通用 – archil 2011-04-10 19:35:36