How to display only one error message using Html.ValidationSummary?

拟墨画扇 提交于 2020-01-05 04:57:12

问题


I have a view (skipping redundant code for simplicity):

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

When I submit, if validation fails inside EditorFor, ValidationSummary shows the list of all validation messages for each item coming from EditorFor.

This screenshot is a view, where EditorFor is a single line with radio buttons:

But I need a single error message just saying that something failed. I tried:

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

But it doesn't show anything. I tried

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

But it doesn't show anything.

What am I doing wrong? Thank you.

Solution This will do the trick.

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

回答1:


The ValidationExtensions.ValidationSummary method will always return an un-ordered list of items.

Another person asked this question and choose to use JQuery to hide the items: https://stackoverflow.com/a/10837702/1220302

Another solution you could do is only display the first item in the list using CSS's nth-child pseudo tag. This of course is dependent on the browser version you're using though:

I think something like this:

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



回答2:


I think you can use the following rule to hide all messages except the first:

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


来源:https://stackoverflow.com/questions/14714290/how-to-display-only-one-error-message-using-html-validationsummary

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!