1

我已經搜索並谷歌搜索這個問題的答案無濟於事。我使用EF4和ASP.NET MVC2,並且我有一個EF4實體「Award」,帶有一個不可爲空的字符串字段「RecipientID」。我使用DataAnnotations進行服務器端驗證,所以在我的「Award」部分類中,我設置了RecipientID以具有Required屬性。當我嘗試提交RecipientID文本框爲空的表單時,我在Html.ValidationSummary中看到了兩次錯誤消息「請輸入收件人」。Html.ValidationSummary顯示重複的錯誤消息

這是因爲錯誤是由實體拋出(它是一個非空值的非空字段)以及應用程序?無論什麼原因,是否有一種方法可以「修復」這個錯誤信息,並且只顯示一次? (修正了引號,因爲我不確定這是否是有意的行爲。)我不認爲有必要包含相關的代碼,但如果需要的話,我會這樣做。

非常感謝您的幫助。

+0

如果您至少顯示了您的模型和您的視圖的相關代碼,它將有助於診斷問題。 – mlibby 2010-11-30 23:14:48

+0

感謝您的幫助,但我找到了答案。 :) – Erik 2010-12-01 15:42:30

回答

2

根據Brad Wilson,它看起來像這樣。我應該搜索「ConstraintException」和EF4。 :)

根據布拉德,輸入驗證在模型綁定之前觸發,導致「必需」錯誤被拋出。另外,這些字段是不可空的,這意味着它們在模型綁定期間會拋出相同的「必需」。在我看來,它有點令人困惑,它會顯示在「Required」屬性中指定的相同消息,而不是SQL異常消息,因爲它看起來像是一樣的錯誤。這當然不是。這也正是ConstraintException進來爲了防止重複的郵件,則只需將您的模型綁定代碼如下所示:

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

這麼簡單。謝謝!

0

我發現使用ModelState.Clear();有類似問題時工作。