jquery - 使用 asp.net core 删除所需的验证

标签 jquery asp.net asp.net-mvc unobtrusive-validation

我有一个客户需要表单上有两个按钮。保存未完成表格进度的表格。因此,此表单仍然需要验证字段,但会忽略所需的验证。另一个按钮需要运行包含必填字段的完整验证。

我正在使用库存标准 asp.net core 项目,我相信该项目使用 jquery-validation-unobtrusive 并且基于 View 模型。

我想做的是当单击“保存进度”按钮时删除所有必需的验证并提交表单。然而,我在堆栈溢出或互联网上找到的代码都不适合我的场景。

我已经尝试过:

<div class="form-group">
            <input id="Progress" type="submit" value="Save Progress" onclick="foo()" class="btn btn-default" />
        </div>

 function foo() {

        $('#FamilyName').rules("remove", "required");


        return true
    }

     function foo() {
        var settings = $('#Registration').validate().settings;
        for (var i in settings.rules) {
            delete settings.rules[i].required;
        }
 }

以上两次尝试均成功查找并删除规则,但提交表单后,相关字段的验证仍然失败。

我很困惑,不知道如何继续。

最佳答案

更改客户端上的必需规则不会影响服务器端验证。您的 [Required] 属性验证仍在模型绑定(bind)过程中执行,因此 ModelState 将无效,并且您需要手动检查每个属性以确定其是否无效,因为[Required] 属性,或由于您的其他验证属性之一。

此外,您需要再次添加所有规则(或重新解析 $.validator)以获得正常提交的客户端验证。

相反,请在 View 模型中包含 bool 属性,以便您可以使用条件 [RequiredIf] 属性(您可以使用 foolproof 属性,或者this project 中的那个)。

您的模型将包括

public bool IsDraft { get; set; }
[RequiredIf("IsDraft", false, ErrorMessage = "...")]
public string FamilyName { get; set; }

并在 View 中

@Html.HiddenFor(m => m.IsDraft)

@Html.LabelFor(m => m.FamilyName)
@Html.TextBoxFor(m => m.FamilyName)
@Html.ValidationMessageFor(m => m.FamilyName)


<input id="Progress" type="button" value="Save Progress" class="btn btn-default" />
<input id="Final" type="button" value="Save Final" class="btn btn-default" />

以及相关的脚本

$('#Progress').click(function() {
    $('#IsDraft').val('True');
    $(yourForm).submit();
});
$('#Final').click(function() {
    $('#IsDraft').val('False');
    $(yourForm).submit();
});

关于jquery - 使用 asp.net core 删除所需的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49377659/

相关文章:

javascript - jQuery 验证 - 如何显示错误时的默认标注?

c# - Razor View 中 foreach 循环中的 Assembly Not Referenced 编译错误

javascript - 如何创建javascript执行器以使元素在selenium webdriver中可见

javascript - 如何在表格单元格中添加图像

c# - 从表中删除*

c# - MVC App_GlobalResources,使用本地并发布

c# - 创建通用扩展方法以提供过滤功能

javascript - 如何在打印布局 html 中设置 img 样式

javascript - 添加类以滚动链接并在单击时添加相同的类

asp.net - 如何强制浏览器不存储HTML表单字段数据?