我在使用jQuery验证来验证模型KendoWindow上的Kendo小部件(特别是下拉列表)时出现问题,该模型使用AJAX检索表单。除了使用隐藏字段(下拉列表,文本区域等)的Kendo小部件之外,验证工作得很漂亮我已经看过许多帖子(例如here和here)来描述和解决非常类似的问题,但这些方法似乎不适用于模态KendoWindow。解决方案应该是这样的:
$.validator.setDefaults({ ignore: ""});
但它在我的情况下不起作用。这是我的部分视图中的代码,它通过ajax加载模态窗口:
@model ProductManagement.Models.BaseModel
<script src="../../Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$.validator.setDefaults({ ignore: "" });
});
</script>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)...
这样做有诀窍吗?任何帮助将不胜感激!
答案 0 :(得分:3)
配置Kendo UI弹出窗口以使用jQuery验证(MVC 4):
我使用jQuery Validation Plugin 1.8.1进行了这项工作。不确定如何使用版本&gt; 1.9。
在_Layout.cshtml中,将以下内容添加到文档就绪功能中:
$ .validator.setDefaults({ignore:“”}); 编辑:这是不正确的。版本1.8.1不需要。
在包含弹出窗体的局部视图中,引用jquery.validate.min.js和jquery.validate.unobtrusive.min.js
在表单上,所有字段必须具有正确的命名。例如,我正在使用一个视图模型,它使字段名称看起来像“VM_ProductInfo.Product_ID”,“VM_ProductInfo.Product_Name”等。如果任何字段的名称不一致,例如只是“Product_Description”(没有“VM_ProductInfo”。 “前缀”,验证只能部分正常工作,表格提交尽管有错误。
在表单上,为任何隐藏字段包含ValidationMessageFor。例如,如果我要隐藏Product_ID字段,我仍然需要包含验证,如下所示:
@ Html.HiddenFor(model =&gt; model.Product_ID) @ Html.ValidationMessageFor(model =&gt; model.Product_ID)
回顾过去,上面的数字4和5是让我最悲伤的原因。如果我知道检查这些,我会节省很多小时的头撞。
这是一个试错法解决方案。如果你知道更好的方法,请回复。
附注:Kendo文档说明为Dropdownlist小部件指定名称为mandatory。至少据我所知,它不是。通过不使用.Name,表单构建的命名与表单的其余部分一致。