1

私はこの質問の答えを無駄に検索し、Googleで検索しました。私はEF4とASP.NET MVC2を使用していますが、EF4エンティティの "Award"にはnullのない文字列フィールド "RecipientID"があります。私はサーバー側の検証にDataAnnotationsを使用しています。そのため、私の "Award"部分クラスでは、RecipientIDをRequired属性に設定しました。 RecipientIDテキストボックスが空のフォームを送信しようとすると、「受信者を入力してください」というエラーメッセージがHtml.ValidationSummaryに2回表示されます。Html.ValidationSummary重複したエラーメッセージを表示

これは、エンティティ(null値を持つnull値ではないフィールド)とアプリケーションの両方でスローされているためですか?理由が何であれ、これを「修正」してエラーメッセージを1回だけ表示する方法はありますか? (これが意図された動作であるかどうかわからないため、引用で修正されています)関連するコードを含める必要はないと思っていましたが、必要であればそれを行います。

ご協力いただきありがとうございます。

+0

少なくともあなたのモデルとビューの関連コードを表示すると、問題の診断に役立ちます。 – mlibby

+0

助けてくれてありがとうが、私は答えを見つけた。 :) – Erik

答えて

2

Brad Wilsonによると、これが意図されているように見えます。私は "ConstraintException"とEF4を探していたはずです。 :)

Bradによると、入力検証はモデルがバインドされる前に起動され、結果として「必須」エラーがスローされます。さらに、これらのフィールドはnull不可能です。つまり、モデルバインド中に同じ「必須」をスローします。私の意見では、それは同じエラーのように見えるので、SQL例外メッセージではなく、 "必須"属性で指定された同じメッセージを表示するのはちょっと混乱します。それは確かにそうではありません。これはConstraintExceptionが入る場所です。重複したメッセージを防ぐために、モデルバインディングコードを次のようにラップしてください:

if (ModelState.IsValid) { 
    ValidateModel(award); 
    repository.Add(award); 
    repository.Save(); 
} 

このように単純です。ありがとう!

0

私はそれがModelState.Clear()を使用していることを発見しました。同様の問題が発生したときに働いた。

+0

私はModelState.Clear()を使用しません。これは単純にエラーを取り除くためです。 – Erik

関連する問題