如何知道ModelState是否包含错误

时间:2012-01-18 09:13:21

标签: javascript jquery asp.net-mvc-3

在我的控制器中发布表单时,我会进行以下检查:

if(ModelState.IsValid)

如果模型无效,则会向ModelState添加错误。然后将模型传递给具有验证摘要的视图。

但是,我想检查ModelState是否有来自jQuery ready处理程序内部的错误,以便在表单有错误时添加一些额外的行为。这可能吗?

3 个答案:

答案 0 :(得分:28)

你可以吐出全局javascript变量:

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

然后:

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

答案 1 :(得分:2)

@Dimitrov的一点补充回答:

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

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

在助手周围使用单个qoutes非常重要。否则,结束分号;会导致问题。你可以编写它,也不能,它在任何情况下都会导致语法错误。除非你像我提到的那样把那些单引号放在助手身边。

答案 2 :(得分:0)

除了Darins答案:

在.cshtml中:

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

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