自定义数据验证不起作用

Custom data validation not working

我需要调用 ajax 方法对密码字段进行自定义数据验证。这是我的代码 -

.cshtml

<div class="form-group" style="margin-top: 20px">
    @Html.LabelFor(m => m.Password):    
    @Html.PasswordFor(m => m.Password,
                      new
                          {
                              autofocus = "autofocus",
                              autocomplete = "off",
                              @class = "form-control",
                              value = "",
                              data_val_newpassword = "Password does not meet requirements"
                          })
    @Html.ValidationMessageFor(m => m.Password)
</div>

.js

$.validator.addMethod("newpassword", function (value, element) {
    var isValid = false;

    $.ajax({
        url: ccm.resolveUrl('/Home/ValidateNewPassword'),
        data: { password: value },
        async: false
    }).done(function (data) {
        isValid = data.Success;
    });
    return isValid;
});

$.validator.unobtrusive.adapters.addSingleVal("newpassword");

HomeController.cs

public JsonResult ValidateNewPassword(string password)
{
    // Validate password against all password requirements.
    var isValid = _passwordValidationService.IsValidPassword(password);

    return Json(new { Success = isValid }, JsonRequestBehavior.AllowGet);
}

但是,jquery 方法没有被调用,因此没有 ajax 请求被触发。

请指导。

谢谢!

我通过替换解决了问题

$.validator.unobtrusive.adapters.addSingleVal("newpassword");

有了这个 -

$.validator.unobtrusive.adapters.addBool("newpassword");