2

我有一个观点(为简单起见跳过冗余代码):

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

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

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

在此处输入图像描述

但我需要一条错误消息,只是说某事失败了。我试过:

@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 !!")
4

2 回答 2

3

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

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

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

我认为是这样的:

.validation-summary-errors ul li:nth-child(-n+1) {
    display:none;
}
于 2013-02-05T18:35:00.297 回答
2

我认为您可以使用以下规则隐藏除第一条消息之外的所有消息:

.validation-summary-errors ul li:nth-child(n+2) {
    display:none;
}
于 2015-11-22T02:48:36.067 回答