检查ModelState的Jquery是否有效

时间:2016-06-05 13:47:03

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

我想通过jquery检查ModelState是否有效。在我的场景中,如果他点击提交按钮,并且字段满足必需属性的要求,我想打开模型弹出窗口,否则我们想要显示错误,任何人都可以告诉我如何检查ModelState是否有效? / p>

5 个答案:

答案 0 :(得分:4)

为此,我认为你有两种解决方法。 首先,您可以简单地向控制器发送ajax帖子(例如:

public JsonResult IsModelStateValid(YourModel model)
{
  return Json(ModelState.IsValid);
}

并且基于此,你可以做任何你想做的事。 其次,如果您不想拨打服务器电话,可以直接查看

var isValid = $('#frm').valid()

在你的jquery提交事件或按钮点击事件中。 如果您启用了不显眼的验证并且在ASP.NET MVC的内置验证中适用于所有验证,那么这将起作用,但不适用于您的自定义验证。

答案 1 :(得分:0)

将Model转换为JSON对象并遍历它以检查并验证模型属性。

 <script type="text/javascript">
        var model = @Html.Raw(Json.Encode(Model));

    // Now iterate through the JSON object and check for the properties you want to validate

 </script>

答案 2 :(得分:0)

使用数据注释作为视图验证时,则无法使用jquery进行验证,因此需要首先检查所有字段是否有效

使用

$("form").isValid() 

$("form").valid()

在我的应用程序中不起作用, 因此,我找到了一个像这样的解决方案,

当您在html端通过模型使用验证时,它将使用 数据注释信息,即

<span class="field-validation-valid text-small text-danger" data-valmsg-for="Name" data-valmsg-replace="true"></span>
  

它有两个不同的类名
         1. field-validation-valid
         2. field-validation-error

因此您可以识别出,如果您的 span类 field-validation-valid ,而不是所有验证都是,并且您的span类是 field-validation-error (字段验证错误),而不是某些验证失败

因此,使用该标识,您可以检查表格的 isValid()

 //Check all validation done 
function checkFormValidateOrNot() {

        if ($(".field-validation-error").length > 0) {
             return false;
           }

        $(".form-control").each(function () {
            if ($(this).attr("data-val") == "true" && $(this).val() == "" && 
                $(this).is("select") == false) {
                   return false;
               }
        });

     return true;
}

//Trigger when form sumbit for save
$("form").on("submit", function () {

    //check validate if all field are validate true
    if (checkValidateOrNot() == true) {
        MakeReadOnly();
        alert("Pass all validation");
    }
});

通过这种方式,我使用jquery检查 ModelState 有效

答案 3 :(得分:0)

您还可以使用:

 @ViewData.ModelState.IsValid

// In your JS define:
var True = true;
 var False = false;

function ClosePopup() {               
        if(@ViewData.ModelState.IsValid)
            close();   // will close the popup                   
}

答案 4 :(得分:-1)

这有两种方式: 第一: 通过页面上的JS HTML进行验证并显示值,如果要显示需要的模型,则需要 - 第二种方式: 将验证错误发送给js并在页面上显示。