使用远程验证进行多字段验证

2023-12-27

我有以下模型:

public class Customer
{
    public string FirstName {get;set;}

    public string LastName {get; set;}

    [Remote("CardExisting", "Validation", AdditionalFields="FirstName,LastName")
    public string CardNumber {get; set;}
}

CardExisting 操作将检查是否存在针对名字和姓氏的卡编号组合的现有记录。

如果用户首先输入卡号,然后输入他的姓名,我无法验证他,所以当他返回并输入他的姓名时,我需要再次远程验证,当焦点已经从卡号属性中丢失时,我该怎么做?


扩展 Jaluka 的答案,我编写了这个辅助方法,该方法查找每个具有“附加字段”的远程验证元素,然后在每次这些字段之一发生更改时触发对所述元素的验证。

// I hate naming things
function initializeRemotelyValidatingElementsWithAdditionalFields($form) {
    var remotelyValidatingElements = $form.find("[data-val-remote]");

    $.each(remotelyValidatingElements, function (i, element) {
        var $element = $(element);

        var additionalFields = $element.attr("data-val-remote-additionalfields");

        if (additionalFields.length == 0) return;

        var rawFieldNames = additionalFields.split(",");

        var fieldNames = $.map(rawFieldNames, function (fieldName) { return fieldName.replace("*.", ""); });

        $.each(fieldNames, function (i, fieldName) {
            $form.find("#" + fieldName).change(function () {
                // force re-validation to occur
                $element.removeData("previousValue");
                $element.valid();
            });
        });
    });
}

像这样调用该函数:

$(document).ready(function() {
    initializeRemotelyValidatingElementsWithAdditionalFields($("#myFormId"));
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用远程验证进行多字段验证 的相关文章

随机推荐