Как узнать, содержит ли 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";