When a form is posted in my controller, I make the following check:
if(ModelState.IsValid)
If the model is not valid, errors are added to the ModelState
. The model is then passed to the view with validation summary.
However, I want to check if the ModelState
has errors from inside the jQuery ready
handler, so that I can add some additional behavior if the form has errors. Is that possible?
You could spit global javascript variable:
<script type="text/javascript">
var isValid = @Html.Raw(Json.Encode(ViewData.ModelState.IsValid));
</script>
and then:
$(function() {
if (!isValid) {
alert('opa');
}
});
a little addition to @Dimitrov answer:
<script type="text/javascript">
var isValid = '@Html.Raw(Json.Encode(ViewData.ModelState.IsValid))';
if (isValid != 'true')
// model has some errors...
</script>
It's important to use single qoutes around the helper. Otherwise, that ending semicolon ;
cause problems. Nether you can write it, nor you can't, at all cases it cause a syntax error. Unless you put those single quotes around the helper as I mentioned.
In addition to Darins Answer:
In .cshtml:
@Html.Hidden("IsValid", Json.Encode(ViewData.ModelState.IsValid))
in JS
var isValid = $('#IsValid').val().toLowerCase() == "true";
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With