Html.ValidationSummary显示重复的错误消息

时间:2010-11-30 23:11:25

标签: asp.net asp.net-mvc-2 entity-framework-4 duplicates validationsummary

我搜索并搜索了这个问题的答案无济于事。我正在使用EF4和ASP.NET MVC2,我有一个EF4实体“Award”,带有一个不可为空的字符串字段“RecipientID”。我正在使用DataAnnotations进行服务器端验证,因此在我的“Award”部分类中,我已将RecipientID设置为具有Required属性。当我尝试将RecipientID文本框提交为空的表单时,我在Html.ValidationSummary中看到我的错误消息“请输入收件人”两次。

这是因为实体(因为它是一个具有空值的非可空字段)以及应用程序都会抛出错误吗?无论是什么原因,有没有办法“修复”这个并让错误信息只显示一次? (修复引号,因为我不确定这是否是预期的行为。)我认为没有必要包含相关代码,但如果需要,我会这样做。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

根据Brad Wilson,这似乎是有意的。我应该搜索“ConstraintException”和EF4。 :)

根据Brad的说法,在绑定模型之前会触发输入验证,从而导致抛出“Required”错误。此外,这些字段是非可空的,这意味着它们在模型绑定期间抛出相同的“必需”。在我看来,它会显示在“Required”属性中指定的相同消息而不是SQL异常消息,这有点令人困惑,因为它使它看起来像是相同的错误。这肯定不是。这就是ConstraintException的用武之地。为了防止重复的消息,只需将你的模型绑定代码包装起来:

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

这很简单。谢谢!

答案 1 :(得分:0)

我发现使用ModelState.Clear();在遇到类似问题时工作。