Подтвердить что ты не робот

Как удалить список из сводки проверки

Я добавил помощник ValidationSummary Html для класса View Model, который имеет 5 обязательных полей. И это работает, получилось красивое красное слово отсутствует 1, отсутствует 2 и т.д. Но мне нужно отобразить только одно сообщение, а не пять из них (что-то вроде: "Ваш ввод недействителен" ). Можно ли это сделать с помощью ValidationSummary?

4b9b3361

Ответ 1

У вас есть два варианта (по крайней мере):

Использовать сводку проверки достоверности и исключить ошибки свойств:

@Html.ValidationSummary(true, "The input is not valid")

или связать сообщение об ошибке с пользовательским ключом в вашем действии:

if (!ModelState.IsValid)
{
    ModelState.AddModelError("myerrorsummary", "The input is not valid");
}

и отобразите его на своей странице:

@Html.ValidationMessage("myerrorsummary")

Ответ 2

Вы можете попробовать пропустить помощники, если все, что вы хотите сделать, это просто показать сообщение, если ModelState недействительно. Просто проверьте ModelState внутри ViewData, и это должно работать.

@if (!ViewData.ModelState.IsValid)
{
    <p>Your input is not valid.</p>
}

Ответ 3

Если вы посмотрите на исходный код MVC3, вы увидите, что в настоящее время, если вы используете ValidationSummary с excludePropertyErrors=true, имея UnobtrusiveJavaScriptEnabled, не будет отображаться итоговое резюме.

Мне удалось отобразить только одно сообщение с MVC3 с включенным UnobtrusiveJavascript для проверки на стороне клиента. Не используйте @Html.ValidationSummary вообще, а рендеринг:

@{
    //Show the message when there are server side errors
    ViewBag.ValidationSummaryClass = ViewData.ModelState.IsValid ? "validation-summary-valid" : "validation-summary-errors";
}
<div class="@ViewBag.ValidationSummaryClass" data-valmsg-summary="true">
    <span>Before you can continue, please make sure you have completed the mandatory fields highlighted above.</span>
    <ul style="display:none"/>
</div>

Обратите внимание, что display:none, ненавязчивый javascript по-прежнему заполняет список сообщениями об ошибках, но они скрыты.

Ответ 4

Один подход грубой силы, который я использовал в MVC3:

if (!ModelState.IsValid)
{
    ModelState.AddModelError("", "Some contextual error message");
}

и отобразите его на своей странице:

<% if(!ViewData.ModelState.IsValid) { %>
    <span class="error"><%=ViewData.ModelState[String.Empty].Errors[0].ErrorMessage %> </span>
<% } %>