ASP.NET MVC和部分客户端验证

时间:2011-05-13 13:01:39

标签: asp.net-mvc validation asp.net-mvc-3 client-side-validation

我有一个很大的形式,我想分成不同的步骤,但我需要在进入下一步之前验证当前步骤中的字段。

例如:我的表格有40个字段,它们分为4个步骤(每个10个字段)。在HTML中,40位于同一页面,但是使用jQuery我只显示前10个和下一个按钮,第四个页面包含“提交”按钮。在进入下一步之前,我需要一种方法来调用这十个字段的验证。

有没有办法实现这个目标?

问候。

4 个答案:

答案 0 :(得分:1)

假设你使用默认的mvc3 unobtrusive验证,你可以使用循环和Single Element Validation

调用所需元素的验证

答案 1 :(得分:0)

您可以使用jQuery Validation plug-in。这有一个option在验证时忽略元素。例如,您可以使用类标记所有未显示(并且不需要验证)的字段。例如,要忽略所有使用class="ignore"的表单元素,您需要执行此操作:

$("#myform").validate({
   ignore: ".ignore"
})

答案 2 :(得分:0)

虽然通过使用属性class="ignore"标记它们来忽略元素,但MVC 3默认使用jQuery的验证插件和plug-in will not validate disabled fields。除了可见的10个字段之外,您隐藏元素的代码,您也可以禁用这些元素,并且不会验证它们(并注意那些禁用的字段也不会发布到服务器)。

e.g。

$('input').attr('disabled', 'disabled');

答案 3 :(得分:0)

如果您使用按钮在每个步骤之间移动,则可以修改页面以为每个步骤创建单独的表单。然后,您可以将验证限制为作为提交按钮的父级的表单,并使用“步骤”的验证来确定是否启用/显示下一步的表单。以下是一些示例代码:

$(".stepButton").live("click", function() {
    if (isValid(this)) {
        // code to proceed to next step
    }
});

function isValid(el) {
    var $thisform = $(el).parent().parent();
    $thisform.validate();
    return $thisform.valid();
}