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

问题描述:

我有一个视图(跳过冗余代码为简单起见):如何仅使用Html.ValidationSummary显示一条错误消息?

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

@ Html.ValidationSummary(true)应该有效。有没有机会,你的形式是循环的? –

+0

没有。如果它显示验证消息列表,它应该显示EditorFor的一般错误消息,如果我通过(true),但它不会。 – monstro

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

另一个人问这个问题,并选择使用jQuery来隐藏物品: https://*.com/a/10837702/1220302

你可以做的另一种解决方案是只有在使用CSS的nth-child伪标签列表中显示的第一个项目。当然,这取决于你的浏览器版本正在使用,但:

我觉得是这样的:

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

我站好了。如你所说,总结返回ul或者什么都不是。 –

+0

但是怎么样:ValidationSummary(HtmlHelper助手,布尔excludePropertyErrors,String消息)? excludePropertyErrors:仅用于显示摘要显示模型级别的错误;如果为摘要显示所有错误,则为false。 消息:与验证摘要一起显示的消息。 – monstro

+0

哦,看来这条消息只显示第一个参数为false时,如UL标准列表中的标签。 – monstro

我认为你可以使用以下规则来隐藏除第一个所有消息:

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