【问题标题】:Html.ValidationSummary showing duplicate error messagesHtml.ValidationSummary 显示重复的错误消息
【发布时间】:2010-11-30 23:11:25
【问题描述】:

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

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

提前感谢您的帮助。

【问题讨论】:

  • 如果您至少从模型和视图中显示相关代码,这将有助于诊断问题。
  • 感谢您的帮助,但我找到了答案。 :)

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


【解决方案1】:

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

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

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

就这么简单。谢谢!

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我不会为此使用 ModelState.Clear() ,因为那样只会消除错误。
    猜你喜欢
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    相关资源
    最近更新 更多