2009-04-07 15 views
13

ModelState.AddModelErrorを使用して自分のフォームの入力を検証する際に奇妙な問題が発生しています。 Html.ValidationMessageからの出力は真のHTML値ではありませんが、エンコードされた値なので、CSSスタイルはエラーメッセージに適用されません。ModelState.AddModelErrorがHTMLを符号化します

例:これは彼らの以前のベータ版のとケースのように使用していなかったと私はここに取るべきアプローチわからない

<span class="field-validation-error">&lt;span class=&quot;negative&quot;&gt;URL is Required&lt;/span&gt;&lt;br class=&quot;hid&quot; /&gt;</span> 

private string errorMessage = "<span class=\"negative\">{0}</span><br class=\"hid\" />"; 
ModelState.AddModelError("title", String.Format(errorMessage, "Tab title is required")); 

出力は次のように示されています。

おかげ ニック

答えて

12

独自の拡張機能を作成することなく、これを行う別の方法もあります。

セイ例えば我々はコントローラのいずれかに次のようにあります

ModelState.AddModelError("Name", "<b>Please Use a Valid Person Name</b>"); 

私たちは、その後、我々の見解では、次の操作を行うことができます。

@if(Html.ValidationMessageFor(x => x.Name) != null){ 
    @Html.Raw(Html.ValidationMessageFor(x => x.Name).ToString()) 
} 

ザ・から'<b>Please Use a Valid Person Name</b>'のエラーメッセージを防止しますエンコードされています。

+1

これは一度に動作するのかどうかはわかりませんが、MVC 3では確認できません。 –

+13

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

1

は模倣Html.VallidationMessage ...独自の拡張メソッドを作成しますか?

組み込みのMVC検証用のもの(ModelState、ValidationMessageなど)は、ページ上に複数のフォームを持つページに対応していないため、何か類似していなければなりませんでした。

+0

あなたが正しいです - 間違ったアイテムを更新しました。彼らはどちらもhtmlのエンコーディングに関連していました - 私はちょうど間違ったものを更新しました。私は更新プログラムを削除しました。気づいてくれてありがとう。 – IEnumerator

関連する問題