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

Jos*_*hua 6 validation ajax jquery 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文件.

非常感谢提前:)

Dar*_*rov 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,Microsoft使用这些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对象,您必须手动进行解析,这只会让我疯狂.