如何仅使用Html.ValidationSummary显示一条错误消息?
问题描述:
我有一个视图(跳过冗余代码为简单起见):如何仅使用Html.ValidationSummary显示一条错误消息?
@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 !!")
答
ValidationExtensions.ValidationSummary method将始终返回一个无序的项目列表。
另一个人问这个问题,并选择使用jQuery来隐藏物品: https://*.com/a/10837702/1220302
你可以做的另一种解决方案是只有在使用CSS的nth-child伪标签列表中显示的第一个项目。当然,这取决于你的浏览器版本正在使用,但:
我觉得是这样的:
.validation-summary-errors ul li:nth-child(-n+1) {
display:none;
}
答
我认为你可以使用以下规则来隐藏除第一个所有消息:
.validation-summary-errors ul li:nth-child(n+2) {
display:none;
}
@ Html.ValidationSummary(true)应该有效。有没有机会,你的形式是循环的? –
没有。如果它显示验证消息列表,它应该显示EditorFor的一般错误消息,如果我通过(true),但它不会。 – monstro