【问题标题】:How know if ModelState contains errors如何知道 ModelState 是否包含错误
【发布时间】:2012-01-18 09:13:21
【问题描述】:

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

if(ModelState.IsValid)

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

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

【问题讨论】:

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


    【解决方案1】:

    你可以吐出全局 javascript 变量:

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

    然后:

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

    【讨论】:

    • 在我的情况下isValid 总是正确的,但我可以看到我的页面的错误,这里出了什么问题?
    • @DarinDimitrov isValid 在我的情况下也是如此,您可以指出任何建议
    • @supercool 我不记得那种情况了,但我的代码正在检查每个字段是否存在类似if (ModelState.ContainsKey("ReturnDate")) ModelState["ReturnDate"].Errors.Clear(); 的错误
    【解决方案2】:

    对@Dimitrov 回答的一点补充:

    <script type="text/javascript">
        var isValid = '@Html.Raw(Json.Encode(ViewData.ModelState.IsValid))';
    
        if (isValid != 'true')
            // model has some errors...
    </script>
    

    在 helper 周围使用单个 qoutes 很重要。否则,结尾的分号 ; 会导致问题。你不能写,也不能写,在任何情况下都会导致语法错误。除非您像我提到的那样将这些单引号放在帮助器周围。

    【讨论】:

      【解决方案3】:

      除了达林斯回答:

      在 .cshtml 中:

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

      在 JS 中

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

      【讨论】:

        猜你喜欢
        • 2014-03-21
        • 2017-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-13
        相关资源
        最近更新 更多