2011-12-06 10 views
7

エンコードされたテキストでTextBoxForヘルパーを使用する方法はありますか?エンコードされたテキストのMVC3 TextBoxFor

例えば

:例えば、

@Html.TextBoxFor(model => model.Description) 

とmodel.Descriptionの値が符号化される: かみそりビューエンジンとMVC3の次のヘルパーを使用して

<script>alert();'</script> 

結果はエンコードされた文字列を含むテキストボックス、 、希望の結果がデコードされた文字列を含むテキストボックスである場合

<script>alert();'</script> 
エンコードされた文字列の代わりに、

@Html.TextBox("Description", Server.HtmlDecode(Model.Description)) 

を使用してMVC TextBoxForを使用する方法は

ありますか?

+1

に役立ちます願っています。なぜコンテンツはデータベースにエンコードされていますか?一般的には、注射から保護する場合には、表示するときにエンコードするべきではありません。編集時にエンコードして保存すると、エラーや複雑さが増えます。 –

+0

私はあなたが正しいと思っていますが、データがエンコードされたデータベースに保存されている場合には知っておきましょう。私は@ html.TextBoxの他のメソッドが今のところ最良の解決策であると推測しています。 – Erann3

答えて

5

あなたの文字列をhtmlでデコードする必要があります。

これにはSystem.Web.HttpUtility.HtmlDecodeを使用してください。

System.Web.HttpUtility.HtmlDecode("&lt;script&gt;alert();&#39;&lt;/script&gt;") 

<script>alert();'</script> 

TextBoxForがようをサポートしていない、あなたが表示

@{ 
     Model.Description = System.Web.HttpUtility.HtmlDecode(Model.Description); 
    } 
    @Html.TextBoxFor(model => model.Description) 

2.使用前の2つのオプション

1.デコードを持っているになりますこれの@ Html.TextBox

@Html.TextBox("Description", System.Web.HttpUtility.HtmlDecode(Model.Description)) 

これは、あなたがどこかに過エンコーディングものであるかもしれないようですが、私には見えます

+0

返信ありがとうございますが、2つのオプションは私が示唆したものとあまり違いはありません。 – Erann3

関連する問題