2011-07-12 59 views
6

我一直在試圖找到一個體面的文章或片段,解釋什麼是JS的區別(驗證& Ajax)文件是微軟包括與MVC3和我沒有找到任何東西。快速和骯髒的MVC3的Ajax/JS文件的解釋,請:)

會有人善意解釋的差異,他們是如何應該是使用(例如做一個背馱式關閉其他的,而不是用於X原因等):

  • jquery.validate,jQuery的.validate.unobtrusive和MicrosoftMVCValidation
  • jquery.unobtrusive阿賈克斯,MicrosoftAjax & MicrosoftMVCAjax

要添加到這一點 - 基本上我爲什麼要使用jquery.validate與不顯眼的或MVC驗證。或者,他們的目的是與jquery.validate等結合使用。對於Ajax文件也是如此。

由於一噸提前:)

回答

7

這裏是我的2美分:

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

挑首先,因爲它是不顯眼的含義,HTML5 data- *屬性是在輸入字段上生成的,而驗證器不顯眼地附加到單獨的javascript文件中。隨着微軟驗證您的最終標記不再是標記,但它是與JavaScript混合標記。不僅如此,這會增加HTML頁面的大小,但它使得它們更加醜陋,無法從外部靜態資源的瀏覽器緩存功能中受益。

根據項目的不同,我決定是直接使用jQuery.validate插件還是使用自動生成的HTML5數據屬性,並讓jquery.validate.unobtrusive腳本根據某些DataAnnotations規則對自動客戶端腳本進行驗證我的觀點模型。那麼,實際上我並沒有使用DataAnnotations,而是使用FluentValidation.NET,但對客戶端無關緊要,因爲它們都發出了ModelMetaData。我必須同意,使用ASP.NET MVC 3,微軟向那些 jquery.validate.unobtrusive腳本邁出了一步。但基本上它將取決於我正在進行的項目和我需要的控制量。

  • (jquery.unobtrusive阿賈克斯)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對象,您將不得不手動解析,這只是讓我瘋狂。

+0

這是太棒了,正是我一直在尋找。 :)一方面的問題...驗證,你把兩個腳本放在你的頁面上,或者只是選擇一個或另一個?例如是不顯眼的依賴jquery.validate? – Joshua

+0

@Joshua,是的,你需要以下3個腳本:'jquery','jquery.validate'和'jquery.validate.unobtrusive'。 –

+0

非常感謝您的幫助! :) – Joshua

相關問題