コントローラに追加されたエラーと一緒に機能する控えめなクライアント側の検証を実装する方法を理解する上で問題があります。ModelState.AddModelError()
。定義済みとModelStateのエラーを組み合わせたMVC3の検証サマリー
だから、これは現在のコードです:
@Html.ValidationSummary(true)
@Html.ValidationMessageFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.LastName)
私はファーストネームを残している場合は、エラーメッセージが正しく表示されます。私がファーストネームを入力してタブアウトすると、メッセージは消えます。
クライアントエラーがなく、このフォームを送信できる場合は、ユーザーがまだ存在していないことをデータベースに対してチェックする必要があります。もしそうであれば、私はエラーを追加している:
ModelState.AddModelError("", "User already exists")
モデルを返すとき、エラーボックスが示されますが、何のメッセージがそこに存在していません。
(編集:Janのコメントがこの部分を解決しました)@Html.ValidationSummary(true)
を@Html.ValidationSummary(false)
に変更すると、モデルに正しく返されたというエラーメッセージが表示されます。
問題は、すべてのクライアントの検証が複製され、2つの異なる場所に表示されることです。
また、同じ場所/ divにエラーが表示されるようにしたいと思います。今のように、2つの異なる検証の要約になります。
これはどうしてですか?
これは機能するはずです(AddModelErrorとValSum(true)のキーパラメータとして空の文字列)。空の文字列をキーパラメータとして渡すのですか? – Jan
ありがとう!私はそれを空にしてから編集しなかった。これで、エラーメッセージが正しく表示されます。私はまだ2つのエラーボックスが存在するという問題があります:モデルステートエラーのサマリーの1つと、あらかじめ定義されたクライアントエラーの1つ@Html.ValidationMessageFor() – Andreas