在我的數據庫,我有一個包含轉義的數據文本字段:什麼時候asp.net HTML編碼元素?
"O'Neal"
我想它輸出到我的網頁是這樣的:
LastName.InnerText = DB.LastName;
然而,這導致了這個HTML上我的網頁:
<h2 id="LastName">O&#39;Neal</h2>
是什麼讓asp.net編碼的HTML我這樣,我可以相信它會做這一切的時候?
在我的數據庫,我有一個包含轉義的數據文本字段:什麼時候asp.net HTML編碼元素?
"O'Neal"
我想它輸出到我的網頁是這樣的:
LastName.InnerText = DB.LastName;
然而,這導致了這個HTML上我的網頁:
<h2 id="LastName">O&#39;Neal</h2>
是什麼讓asp.net編碼的HTML我這樣,我可以相信它會做這一切的時候?
使用InnerHtml
而不是InnerText
這將不會編碼數據。
InnerText
的official documentation清楚地說,在備註欄:
與InnerHtml屬性,InnerText屬性自動將特殊字符編碼和HTML實體。 HTML實體允許您顯示特殊字符,例如<字符,瀏覽器通常將其解釋爲具有特殊含義。 <字符將被解釋爲標籤的開始,並且不會顯示在頁面上。要顯示<字符,您需要使用實體
<
。例如,如果InnerText屬性被設置爲「
<b> Hello </b>
」時,<
和>
符號被轉換爲分別<
和>
。呈現的輸出將是:<
b>
;你好<
/b>
。<
和>
實體會向瀏覽器指示這些字符將顯示在頁面上。瀏覽器不會檢測到<b>
標籤並以粗體顯示文本。顯示在頁面上的文字是:<b>
你好</b>
。要防止自動HTML編碼和解碼,請使用InnerHtml屬性。