请快速和脏的MVC3 Ajax / JS文件说明:)

时间:2011-07-12 15:29:45

标签: jquery ajax validation asp.net-mvc-3

我一直在努力找到一篇不错的文章或片段,解释了微软在MVC3中包含的JS(Validate& Ajax)文件的区别,我找不到任何东西。

是否会有人友好地解释这些差异以及它们应该如何使用(例如,一个人背驮着另一个,而不是出于X的原因,等等):

  • jquery.validate,jquery.validate.unobtrusive和MicrosoftMVCValidation
  • jquery.unobtrusive-ajax,MicrosoftAjax& MicrosoftMVCAjax

添加到此 - 基本上为什么我会使用jquery.validate与不显眼或MVC验证。或者与jquery.validate等相关的目的是什么。同样对于Ajax文件。

提前感谢:)

1 个答案:

答案 0 :(得分:7)

这是我的2美分:

  • (jquery.validate和jquery.validate.unobtrusive)vs(MicrosoftMVCValidation)

选择第一个,因为它不显眼,意味着在输入字段上生成HTML5 data- *属性,并且验证器不显眼地附加到单独的javascript文件中。使用Microsoft验证,您的最终标记不再是标记,但它是与javascript混合的标记。这不仅增加了HTML页面的大小,而且使得它们更加丑陋,也无法从外部静态资源的浏览器缓存功能中受益。

根据项目,我决定是否直接使用jQuery.validate插件或从自动生成的HTML5 data- *属性中受益,让jquery.validate.unobtrusive脚本根据我的一些DataAnnotations规则进行自动客户端脚本验证。查看模型。好吧,实际上我不使用DataAnnotations而是使用FluentValidation.NET,但它对客户端无关紧要,因为它们都发出ModelMetaData。我必须同意,在ASP.NET MVC 3中,微软向前迈进了一步  jquery.validate.unobtrusive脚本。但基本上它将取决于我正在进行的项目以及我需要的控制量。

  • (jquery.unobtrusive-ajax)vs(MicrosoftAjax& MicrosoftMVCAjax)

以上都不是:-)我建议你使用纯jQuery,但如果你必须在jquery.unobtrusive-ajax和MicrosoftAjax之间选择第一个,原因与上一个完全相同。现在我应该解释为什么我也不喜欢。我已经指出了所有Microsoft *脚本的完整琐事,所以我们不要再重复了。甚至微软自己也意识到了他们的错误,从ASP.NET MVC 3开始jQuery成为默认库,他们的脚本仅包含在与你可能正在转换的旧应用程序的兼容性中,但我想在未来版本中它们将完全消失。问题是为什么纯jQuery与jQuery.unobtrusive-ajax相比?好吧,第一个我对AJAX请求的事件有更多的控制权。使用jquery.unobtrusive-ajax,例如当在OnSuccess回调中返回JSON对象时,它们不会自动解析为javascript对象,您必须手动进行解析,这只会让我疯狂。