ASP.Net MVC: отображать Html.ValidationSummary, только если есть ошибки - PullRequest
9 голосов
/ 07 октября 2009

Html.ValidationSummary () по-прежнему отображается, даже если состояние модели действительно.

Этот пример не работает:

<% if (!this.ViewData.ModelState.IsValid)
{ %>
<%= Html.ValidationSummary()%> 
<% } %>

По-прежнему отображается пустой тег 'ul'. Как сделать так, чтобы он отображал только , если ModelState недействителен?

EDIT Оказывается, ModelState действительно недействителен, но мой код не добавляет никаких сообщений об ошибках, он просто недопустим без видимой причины.

[AcceptVerbs("POST")]
public ActionResult Login(string username, string password, bool? remember)
    {
        if (string.IsNullOrEmpty(username))
        {
            ModelState.AddModelError("Username", "Username is required");
        }
        if (string.IsNullOrEmpty(password))
        {
            ModelState.AddModelError("Password", "Password is required");
        }

        if (ModelState.IsValid)
        {
            ; // this point is never reached
        }

        return View();
    }

Ответы [ 3 ]

6 голосов
/ 07 октября 2009

Если предоставленная вами информация верна, то this.ViewData.ModelState.IsValid, скорее всего, ложно. Здесь должен быть другой код, который вы не предоставите.

2 голосов
/ 11 октября 2012

Отметьте ClientValidationEnabled и UnobtrusiveJavaScriptEnabled в настройках приложения. Отключение их, если они не используются, может решить эту проблему.

2 голосов
/ 07 октября 2009

Исходный код говорит, что, когда состояние модели действительно, помощник возвращает пустую строку. Я подозреваю, что ваше состояние модели действительно недействительно, но сообщение не было добавлено. Или, возможно, разметка действительно исходит от чего-то еще на вашей странице - может быть, даже добавлена ​​с помощью JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...