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