2009-04-14 8 views
2

Html.DropDownList()のようなHTMLヘルパーを使用して出力値をエンコードすることについて心配する必要があるかどうかは疑問です。Html.DropDownList()のようなASP.NET MVCヘルパーメソッドは出力HTMLをエンコードしますか?

もしそうなら、どのようにエンコードするのですか?手動でドロップを作成するのは簡単です。各値を "Html.Encode()"で囲むだけです。しかし、私はHTMLヘルパーを使用するときにこれを行う方法を知らない。

答えて

4

値は自動的にエンコードされているようですので、自分で行う必要はありません。実際のASP.NET MVC 1.0のソースコードの抜粋です(SelectExtensions.csのコードプレックスからダウンロードできます)。

private static string ListItemToOption(SelectListItem item) { 
     TagBuilder builder = new TagBuilder("option") { 
      InnerHtml = HttpUtility.HtmlEncode(item.Text) 
     }; 
     if (item.Value != null) { 
      builder.Attributes["value"] = item.Value; 
     } 
     if (item.Selected) { 
      builder.Attributes["selected"] = "selected"; 
     } 
     return builder.ToString(TagRenderMode.Normal); 
    } 
+0

ASP.NET MVCでほとんどのヘルパーを使用する場合は、テキストを自分でエンコードしないでください。そうすると、ダブルエンコードされたテキストになりますが、これは間違っています。 – Eilon

2

あります。

自分でやりたい場合は、エンコードするHTMLの場所によって、Html.Encode()Html.AttributeEncode()になります。

+0

私の答えを削除しました。 HTMLをレンダリングする前に必ずテキストをエンコードするのですか?私は彼らがベータ版ではなかったと確信しています... – Will

+0

私自身の質問に答える - はい、彼らはベータ版のすべての出力をエンコードします。 – Will

+0

はいソースコードはhttp://codeplex.com/aspnetで入手できます –

関連する問題