2009-07-02 29 views
2

私のシナリオでは、MVCビューのフォーム要素に添付された検証メッセージ内にURLリンク付きのテキストを表示したいと考えています。私はこのように、ValidationExtensions.ValidationMessage拡張メソッドを使用しています:Asp.Net MVC - ValidationMessage() - HTMLエスケープを防ぐ方法は?

<%=Html.ValidationMessage(Model.Name) %> 

私が見ている動作が検証メッセージがHTMLが効果的にメッセージへのリンクを追加してから私を防止するもの、エスケープであるということです。この行動を回避する方法はありますか?私のエラーメッセージはユーザが提供していないので、ここでは出力サニタイズについて心配する必要はないと思います...

答えて

3

私はHtml.ValidationMessageが組み込まれているので、独自のバージョン、または創造的な感じがしている場合は、文字列を返すので、それを割り当てて、元に戻す文字をエスケープします。

string validation = Html.ValidationMessage(Model.Name); 
validation = Regex.Replace(validation, "&gt;", "<"); 
//etc... 
+0

感謝。私は文字列のUnEscape()拡張メソッドを作成しました。今は必要なときにいつでも使用できます。 –

3

あなたのHtml.ValidationMessage(...)メソッドと一緒にHttpUtility.HtmlDecode(...)メソッドを使用することができますが「行わerrを得るために:D

+0

@ Html.Raw(HttpUtility.HtmlDecode(Html.ValidationMessageFor(x => x.Name).ToHtmlString())); – George

関連する問題