2012-01-27 5 views
1

なぜ私が.aspxのページ(上の.NET 3.5)上で書いた場合:.NET対HTMLエンティティ:それは第2のデコードを行いますか?

<%="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 –

答えて

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

+0

@markzzz、なぜあなたの元の文字列のHTMLは、符号化されていますか?それはあなたの問題です。それはhtmlエンコードされるべきではありません。それは通常の文字列でなければなりません。だから、最初の場所で通常の文字列をエンコードしないでください。 –

+0

元の文字列はCMSから取得され、既にエンコードされています。元の文字列は "W ä hlen Sie bitte" ...です!しかし、理論的には、HtmlDecodeを実行すると、私はWählenSie bitteを取得する必要があります...しかし、実際にはdoesnt ... – markzzz

3

あなたが含まれる場合があります任意のHTMLが代わりの符号化をレンダリングされるように、あなたの最初の構文は、出力にあなたは文字通りに渡すHTMLを意味します。

2番目の構文は、表示したいリテラルテキストを渡すためのものです。それはあなたのためのHTMLエンコーディングを行います。あなたはその値をオーバーエンコードしています。

関連する問題