Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
让MVC4验证jquery accordion表单的所有部分_Jquery_Asp.net Mvc_Jquery Ui_Asp.net Mvc 4_Validation - Fatal编程技术网

让MVC4验证jquery accordion表单的所有部分

让MVC4验证jquery accordion表单的所有部分,jquery,asp.net-mvc,jquery-ui,asp.net-mvc-4,validation,Jquery,Asp.net Mvc,Jquery Ui,Asp.net Mvc 4,Validation,我有一个大表单,我使用用于jQueryUI的Accordion插件将其拆分为多个部分 当我单击表单的提交按钮时,MVC的服务器端验证不会检查表单的所有输入字段-它只验证当前扩展部分的字段 在本例中,当我单击submit时,MVC只验证A部分。如果B部分或C部分尚未填写,它会抛出一个疯狂的NullReferenceException错误。我希望MVC4验证Accordion中的所有字段,而不是只查看一个字段 查看呈现的HTML,包含我要验证的其他字段的元素具有style=“display:non

我有一个大表单,我使用用于jQueryUI的Accordion插件将其拆分为多个部分

当我单击表单的提交按钮时,MVC的服务器端验证不会检查表单的所有输入字段-它只验证当前扩展部分的字段

在本例中,当我单击submit时,MVC只验证A部分。如果B部分或C部分尚未填写,它会抛出一个疯狂的
NullReferenceException
错误。我希望MVC4验证Accordion中的所有字段,而不是只查看一个字段

查看呈现的HTML,包含我要验证的其他字段的
元素具有
style=“display:none”
。我希望MVC4除了验证显示的字段外,还验证未显示的字段

编辑: 堆栈上存在溢出,建议将
ignore:[]
添加到jQuery验证器设置应该可以工作。它对我不起作用,不管怎样表单都会提交

$("#GeneralForm").validate({
    rules: {
        GuestName: {
            required: true,
        },
        GuestID: {
            required: true,
        }, // etc.
    },
    ignore: []
});

默认情况下,jquery validator忽略隐藏元素,但您可以禁用此行为:

<script type="text/javascript">
    $.validator.setDefaults({
        ignore: ""
    })
</script>

$.validator.setDefaults({
忽略:“
})

解决方案最终变得简单得可笑。我有两个脚本:一个用于实例化手风琴,另一个用于进行验证:

@Scripts.Render("~/Scripts/Validation", "~/Scripts/Accordion")
命令很重要;切换这两个选项修复了问题

颠倒顺序将:

  • 抛出0个控制台错误
  • 让MVC以令人难以置信的惰性验证表单;即使jqueryvalidate知道一些输入无效,也不会阻止表单发布
  • 如果您使用的是Entity Framework 5(特别是在
    db.SaveChanges()
    ),则稍后将抛出运行时
    NullReferenceException
    错误

此外,
验证器
需要一个自定义的
提交器
(它将根据它们包含的表单字段是否有效打开面板;只有在两个区域都通过了验证测试时才发布表单)
onsubmit:false
。默认值为
true
。如果这是真的,并且您使用的是自定义submitHandler,.

这看起来是真的(尽管我已经读到应该使用
忽略:[
而不是
忽略:“
”),但是我编辑了我的问题,以反映这在我的情况下不起作用。@alex您可以尝试编辑jquery.validate.unstructive.js文件。有一个validationInfo方法,其中包含一些选项,您可以在其中添加ignore属性。