【问题标题】:Mvc 4 validation summary errors not displayingMvc 4 验证摘要错误未显示
【发布时间】:2013-08-15 17:50:16
【问题描述】:

我在显示验证摘要时遇到问题,我只想在验证摘要中显示错误,而不是在字段旁边。 在我看来,

    @Html.ValidationSummary()
    @Html.ValidationMessageFor(m =>m.Name)

在我的控制器中我有

ModelState.AddModelError("Name",
                                "name is required");

我不应该收到验证错误消息吗?在顶部? 我不明白我错过了什么......

我还包括这些脚本文件.. jquery.validate.min.js jquery.validate.unobtrusive.min.js

【问题讨论】:

  • 在发布此问题之前,我尝试了该解决方案。我不知道我错过了什么
  • 嗯,我不认为它们有冲突,但如果你只想要摘要,则不需要@Html.ValidationMessageFor(m =>m.Name)
  • 你也试过查看从服务器返回的实际源代码,看看是否有错误信息吗?可能是某些 CSS 导致它不显示。
  • 我查看了 css,div 标签在那里,但验证中没有文本....我不知道我错过了什么

标签: asp.net-mvc c#-4.0 asp.net-mvc-4


【解决方案1】:

试试

@Html.ValidationSummary(false)

这样它就不会排除属性错误。

尝试@xurca linked 方法,该方法使用空键添加模型错误,使其不绑定到特定属性。

ModelState.AddModelError(String.Empty, "name is required");

【讨论】:

  • 我同时在做两个项目,VS '12 和 VS '13。无论如何,我在 '13 中使用默认模板没有问题,但是在 '12 项目中将 TRUE 设置为 FALSE 为我解决了这个问题(根据您的帖子)。无论如何,谢谢你的帖子。
【解决方案2】:

如果您自定义将字段命名为

 @Html.TextBoxFor(model => model.Name, new {  id = "staffSearchFilterName", value = "", **Name = "staffSearchFilterName"** })

那么你必须使用

@Html.ValidationMessage("staffSearchFilterName")

【讨论】:

    【解决方案3】:

    如果您的 @Html.ValidationSummary() 调用在部分视图中,请不要像这样将数据传递到部分视图中:

    @Html.Partial("_YourForm", Model,  new ViewDataDictionary { { "Submit", true }})
    

    相反,先将键值对添加到 Html.ViewData 集合中:

    @{
        Html.ViewData.Add(new KeyValuePair<string,object>("Submit",true));
    }
    

    然后调用局部视图:

    @Html.Partial("_YourForm", Model, Html.ViewData)
    

    这将允许 ModelState 正确地传播到局部视图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-09
      相关资源
      最近更新 更多