是否有可能“入侵”MVC 3 中支持的不显眼的验证 ASP.NET?

Is it possible to "hack into" the unobtrusive validaton supported in ASP.NET MVC 3?

提问人:Chaddeus 提问时间:3/14/2011 最后编辑:Darin DimitrovChaddeus 更新时间:3/14/2011 访问量:803

问:

我希望能够使用内置的、基于数据注释的、不显眼的客户端验证,但在我知道它通过后再做我自己的 ajax 表单提交。

类似于这个jQuery位:

$('#form').submit(function(e) {
  e.preventDefault();

  if (PassesUnobtrusiveValidation()) {
    // ajax submit form
  }
});

是否有事件或类似的东西(内置于默认的 mvc 3 基于数据注释的客户端验证中 asp.net)我可以挂钩(如示例中的伪装代码)?PassedValidation

我想这样做,这样我仍然可以利用基于数据注释的验证,然后按照我想要的方式异步提交表单。我希望避免在客户端中编写通用验证,让 asp.net mvc 3 为我处理它,然后按照我想要的方式提交表单,使用$.ajax();

jQuery 验证 ASP.NET-MVC-3 数据注释 unobtrusive-javascript

评论

0赞 gideon 3/14/2011
为什么要这样做?=)
0赞 Chaddeus 3/14/2011
问题已更新,以反映原因... ;)
1赞 Thomas Menga 3/14/2011
我不明白你的问题:3
0赞 gideon 3/14/2011
没错,还不清楚你想做什么?例?你想要什么优势?有一些方法可以添加你自己的javascript验证器。
0赞 Chaddeus 3/14/2011
我希望内置的 asp.net mvc 3 不显眼的验证来完成验证工作,如果它通过(即问题中的伪装代码),我想使用 jQuery.ajax() 提交表单(并做一些其他工作)。PassesUnobtrusiveValidation()

答:

6赞 Darin Dimitrov 3/14/2011 #1

如果您使用的是 jquery.validate:

$('#myForm').submit(function() {
    if ($(this).valid()) {
        // Client side validation passed => submit the form
    }
});

另一种可能性是挂钩插件选项

$.validator.setDefaults({
    submitHandler: function(form) {
        // Client side validation passed => submit the form
    }
});

如果您使用的是 MSAjax,那么祝你好运。

评论

0赞 Chaddeus 3/14/2011
太棒了,我正在使用 jQuery 验证版本。我什至没有想到......谢谢。我会尝试一下,但看起来它应该可以工作!非常感谢。