MVC不引人注目的远程验证的事件挂钩

时间:2012-05-02 12:57:52

标签: asp.net-mvc asp.net-mvc-3 jquery-validate unobtrusive-validation remote-validation

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

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

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

还有其他建议吗?这是用于使用ASP.NET成员资格提供程序的Membership.ValidateUser(string username, string password)方法验证密码。每次发送无效密码时,此方法都会递增FailedPasswordAttemtCount,所以我不希望它在模糊,按键等期间执行。

2 个答案:

答案 0 :(得分:7)

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

$.validator.setDefaults({
    onkeyup: false,
    onfocusout: false,
    onsubmit: true
});

答案 1 :(得分:0)

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

$(function () {
    var settings = $.data($('form')[0], 'validator').settings;
    settings.onkeyup = false;
});