2012-01-27 24 views
1

爲什麼,如果我寫了一個.aspx頁(基於.NET 3.5)上:.NET vs HTML實體:它做第二次解碼?

<%="W&auml;hlen Sie bitte"%> 

它正確打印我的HTML頁面:

W&auml;hlen Sie bitte 

,但如果我寫在.aspx.cs頁出頭喜歡:

mySelectBox.Items.Add(new ListItem("W&auml;hlen Sie bitte", "")); 

(這是相同的字符串),它打印作爲選擇的uncorrectly HTML選項:

W&amp;auml;hlen Sie bitte 

它對我的字符串進行「解碼」。爲什麼?我該如何解決它?

+0

谷歌的:)的強大力量,http://www.dotnetperls.com/encode-html-string – 2012-01-27 14:52:08

回答

2

ASP.NET控件已經對輸出進行了HTML編碼,因此您不需要再次執行此操作。

簡單:

mySelectBox.Items.Add(new ListItem("Wählen Sie bitte", "")); 
+0

其實我需要打印字符串並投入列表項,那麼我的原始字符串是W ä hlen Sie bitte。試過'HttpUtility.HtmlDecode(「W ä hlen Sie bitte」),但是我得到了W ä hlen Sie bitte ... – markzzz 2012-01-27 15:09:43

+0

@markzzz,爲什麼你的原始字符串是HTML編碼的?這是你的問題。它不應該是HTML編碼。它應該是一個普通的字符串。所以不要首先編碼普通字符串。 – 2012-01-27 15:11:47

+0

我的原始字符串變成了CMS,它已經被編碼了。原始字符串是「W ä hlen Sie bitte」...!但理論上,做HtmlDecode我應該得到WählenSie bitte ...但實際上它不... – markzzz 2012-01-27 15:20:29

3

您的第一個語法是爲了輸出您以字面方式傳遞的HTML,以便您可能包含的任何HTML獲取呈現而不是編碼。

第二種語法是爲了傳遞你想要顯示的文字文本;它爲你做了HTML編碼。您已經過度編碼該值。