如何使用Html.ValidationSummary只显示一条错误消息?

时间:2013-02-05 18:25:16

标签: asp.net-mvc-3 razor validation

我有一个视图(为简单起见,跳过冗余代码):

@model CompetencyModel
@using (Html.BeginForm())
{
    @Html.ValidationSummary()
    @Html.EditorFor(model => model.Results)
}

当我提交时,如果EditorFor内的验证失败,则ValidationSummary 会显示来自EditorFor的每个项目的所有验证消息的列表

此屏幕截图是一个视图,其中EditorFor是带有单选按钮的单行:

enter image description here

但我需要一个单个错误消息,只是说某些内容失败了。我试过了:

@Html.ValidationSummary(true)
@Html.EditorFor(model => model.Results)

但它并没有显示任何东西。我试过了

@Html.ValidationSummary(true)
@Html.EditorFor(model => model.Results)
@Html.ValidationMessageFor(model => model.Results, "ERROR !!!")

但它没有显示任何内容。

我做错了什么?谢谢。

解决方案 这样就可以了。

<style>.validation-summary-errors ul { display: none; }</style>
@Html.ValidationSummary("Can't save, you must answer all questions !!")

2 个答案:

答案 0 :(得分:3)

ValidationExtensions.ValidationSummary method将始终返回无序的项目列表。

另一个人问这个问题并选择使用JQuery来隐藏这些项目: https://stackoverflow.com/a/10837702/1220302

您可以做的另一个解决方案是仅使用CSS的nth-child伪标记显示列表中的第一项。这当然取决于您使用的浏览器版本:

我认为是这样的:

.validation-summary-errors ul li:nth-child(-n+1) {
    display:none;
}

答案 1 :(得分:1)

我认为您可以使用以下规则隐藏除第一个以外的所有邮件:

THREE.Color()