Как узнать, содержит ли ModelState ошибки

Когда форма зарегистрирована в моем контроллере, я делаю следующую проверку:

if(ModelState.IsValid)

Если модель недействительна, ошибки добавляются в ModelState. Затем модель передается в представление с помощью сводки валидации.

Однако, я хочу проверить, есть ли у ModelState ошибки внутри обработчика jQuery ready, поэтому я могу добавить некоторое дополнительное поведение, если форма имеет ошибки. Возможно ли это?

Ответ 1

Вы можете переплести глобальную переменную javascript:

<script type="text/javascript">
    var isValid = @Html.Raw(Json.Encode(ViewData.ModelState.IsValid));
</script>

а затем:

$(function() {
    if (!isValid) {
        alert('opa');
    }
});

Ответ 2

небольшое дополнение к ответу @Dimitrov:

<script type="text/javascript">
    var isValid = '@Html.Raw(Json.Encode(ViewData.ModelState.IsValid))';

    if (isValid != 'true')
        // model has some errors...
</script>

Важно использовать одиночные qoutes вокруг помощника. В противном случае эта точка с запятой ; вызывает проблемы. Пустоту вы можете написать, а вы не можете, во всех случаях это вызывает синтаксическую ошибку. Если вы не разместите эти одинарные кавычки вокруг помощника, как я уже говорил.

Ответ 3

В дополнение к ответам Даринса:

В .cshtml:

@Html.Hidden("IsValid", Json.Encode(ViewData.ModelState.IsValid))

в JS

var isValid = $('#IsValid').val().toLowerCase() == "true";