5

有没有办法在客户端上挂钩 MVC3 不显眼的远程验证,在数据提交到远程方法之前,以及从远程方法返回结果之后?

我试图告诉远程验证器仅在单击提交按钮时才执行验证。正常的行为是验证几次,例如在按键、模糊等期间。这不好,因为有问题的验证方法需要调用非幂等操作。我需要确保仅在用户单击提交按钮时才调用该方法。

如果我可以挂钩之前的事件,我可以在表单中设置一个字段,将提交按钮标记为是否被点击。但是,在远程方法返回验证结果后,我需要重置此标志。

还有其他建议吗?这是为了使用 ASP.NET Membership Provider 的Membership.ValidateUser(string username, string password)方法验证密码。FailedPasswordAttemtCount每次发送无效密码时,此方法都会递增,因此我不希望它在模糊、按键等期间执行。

4

2 回答 2

7

您可以覆盖当前页面的默认验证选项:

$.validator.setDefaults({
    onkeyup: false,
    onfocusout: false,
    onsubmit: true
});
于 2012-05-02T13:03:30.113 回答
0

上面的解决方案并没有为我解决这个问题。不知何故,没有设置验证器设置。因此,我实现了以下内容并且它有效:

$(function () {
    var settings = $.data($('form')[0], 'validator').settings;
    settings.onkeyup = false;
});
于 2016-09-15T13:23:06.283 回答