在将数据提交到远程方法之前,以及从远程方法返回结果之后,有没有办法在客户端上挂接MVC3不显眼的远程验证?
我试图告诉远程验证器仅在单击提交按钮时执行验证。正常行为是多次验证,例如在按键,模糊等过程中。这是不好的,因为有问题的验证方法需要调用非幂等操作。我需要确保只有在用户点击了提交按钮时才会调用该方法。
如果我可以挂钩到之前的事件,我可以在表单中设置一个字段,将提交按钮标记为是否被点击。但是,在远程方法返回验证结果后,我需要重置此标志。
还有其他建议吗?这是用于使用ASP.NET成员资格提供程序的Membership.ValidateUser(string username, string password)
方法验证密码。每次发送无效密码时,此方法都会递增FailedPasswordAttemtCount
,所以我不希望它在模糊,按键等期间执行。
答案 0 :(得分:7)
您可以覆盖当前页面的默认验证选项:
$.validator.setDefaults({
onkeyup: false,
onfocusout: false,
onsubmit: true
});
答案 1 :(得分:0)
上面的解决方案并没有为我解决这个问题。不知何故,验证器设置未设置。所以,我实现了以下内容并且有效:
$(function () {
var settings = $.data($('form')[0], 'validator').settings;
settings.onkeyup = false;
});