我正在使用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