Html.ValidationSummary()
ビューで一般的なエラーメッセージを表示するために使用したい状況が表示されます。たぶん、何か"There was a problem with the information you entered."
がうまくいかなかったすべてのリストを取得することなく(DataAnnotationsによる)。
補足:私はif(ViewContext.ViewData.ModelState.IsValid){ ... }
、彼らの見解で使用している人々への言及を見つけましValidationSummary
た。控えめに言っても、私はそのアプローチにあまり感心していません。
ModelStateDictionary
検証エラーが発生した各モデル要素のキーがまだ含まれていることが重要です(これによりHtml.EditorFor
、他は正しいcssクラスを記述できます)。
私が最終的に機能しているように見えるのは、次のとおりです。
public static class ModelStateHelpers
{
public static void Empty(this ModelStateDictionary @this)
{
foreach (KeyValuePair<string, ModelState> state in @this)
{
if (state.Value.Errors.Any())
{
state.Value.Errors.Clear();
state.Value.Errors.Add(String.Empty);
}
}
}
}
私のクラスでこれが続きます:
if (StuffWentWrong) {
this.ModelState.Empty();
this.ModelState.AddModelError("", "Something went wrong...");
}
意図したとおり、はエラーメッセージが空白の辞書のHtml.ValidationSummary
html構造を抑制するのに十分賢いです。ModelStates
また、次のようなエラー検証属性で装飾されたテキストフィールドになります。<input class="input-validation-error text-box single-line" data-val="true" data-val-required="The User Name field is required." id="UserName" name="UserName" type="text" value="" />
この特定の解決策は悪臭がしますか?