ASP.NET:TextBox.TextはHTMLエンコードされるがLabel.TextはHTMLエンコードされない

MSDNライブラリにも明記されています。

TextBox.Text プロパティ

テキスト ボックスが表示されるとき、このプロパティの内容は HTML エンコードされます。 たとえば、このプロパティを "<b>Test</b>" に設定した場合、太字の "Test" ではなく "<b>Test</b>" がブラウザーに表示されます。

Label.Text プロパティ

Text プロパティには HTML を含めることができます。 そうである場合、HTML は未変更でブラウザーに渡されますが、ブラウザーでテキストではなくマークアップとして解釈されることがあります。 ブラウザーで HTML マークアップをプレーン テキストとして表示する場合は、クラス概要の例で示すように HtmlEncode メソッドを使用できます。

 

データバインド式を書くときなど、Label.TextプロパティはHttpUtility.HtmlEncodeメソッドを入れるのを忘れないようにしましょう。

aspx

<asp:Label ID="Label1" runat="server" Text='<%# HttpUtility.HtmlEncode("<s>hoge</s>") %>'></asp:Label>

実行結果

image

生成されたHTML

<span id="Span1">&lt;s&gt;hoge&lt;/s&gt;</span>

 

なお、TextBox.Textでも同じように書くと、HTMLエンコードが2回行われてしまいますのでご注意を。

aspx

<asp:TextBox ID="TextBox1" runat="server" Text='<%# HttpUtility.HtmlEncode("<s>hoge</s>") %>'></asp:TextBox>

実行結果

image

生成されたHTML

<input name="TextBox1" type="text" value="&amp;lt;s&amp;gt;hoge&amp;lt;/s&amp;gt;" id="Text1" />

 

でも、TextBoxとLabelで統一した書き方ができないのはちょっと気持ちが悪いですね・・・

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中