2013-02-20 69 views
0

我是一個很長時間的Windows窗體開發人員,試圖讓我的思緒圍繞如何進行Web開發。正如標題所說,我很確定我想繼續使用ASP.NET MVC。我也很確定答案會出現在Javascript,jQuery(和jQueryUI)的領域,我還沒有機會學習。如何在ASP.NET MVC中執行復雜的客戶端數據驗證4

在我們當前的Windows應用程序中,我們有使用選項卡控件的表單,其中每個選項卡控件都有大量用於數據輸入的控件。因此,下面是我需要能夠做到的問題類型(在客戶端)

  1. 有條件地要求例如需要一個或多個窗體上控件的子集。因此,例如,因爲在下拉框中選擇了某個值,所以必須觸發上述規則,其中必須輸入一個或多個控件...或1,並且只有一個子集有條件需要。此外,條件需求控件的子集可以是不同的類型。

我可以繼續下去,但我懷疑其他例子會改變答案。所以爲了清晰起見,我不需要像mvc數據註釋那樣的想法,我可以使用屬性來根據需要標記特定字段,或者在特定範圍內。我需要將這種類型的驗證埋在一堆其他驗證中。

那麼,是否有這種複雜的客戶端驗證的最佳實踐解決方案?有一些第三方的Javascript庫可能允許這樣嗎?

在我的Windows應用程序中,我已經能夠編寫所有派生自公共基類的小封裝規則。因此,舉個例子,我有一個規則,例如addChilren,所有這些都允許你添加從基類規則派生出來的其他對象,或者只是其他控件,並且這個規則可以在運行時更新爲需要1或者更多的孩子對象...

然後,當然這個規則「RequireOneOrMore」就可以在其他地方重複使用,甚至可以作爲一個孩子的其他規則過去了......

我希望一些這有道理......

所以,雖然我通過我的MVC書對我的JavaScript書工作,任何人都可以建議我可以研究什麼選項來完成這個?

感謝, 喬納森

回答

2

我完全同意你說的數據註解是在執行復雜的驗證規則方面非常有限。

但在考慮客戶端驗證之前,您應確保所有驗證規則(無論多麼複雜)至少在服務器上執行。我做了複雜的服務器端驗證的偉大框架,我會推薦你​​的是FluentValidation.NET。它與ASP.NET MVC很好地集成,允許您處理任意複雜的驗證規則。

設置服務器端驗證後,您可以開始考慮用戶體驗,並可以選擇提供客戶端驗證。對於複雜的規則,我建議你擺脫jquery.unobtrusive.validate.js腳本,然後直接使用jquery.validate.js插件。這意味着,基本上你可以寫驗證規則自己對於給定的形式:

$('form').validate({ 
    rules: { 
     // ... here you could write your validation rules 
     // you could also extend the plugin by writing custom 
     // validation methods to handle arbitrarily complex scenarios 
    } 
}); 

我請你閱讀documentation of the plugin我們熟悉的語法。

但是既然你說你對jQuery非常陌生,在做任何帶有驗證和插件的客戶端開發之前,你的第一個任務就是學習jQuery。一個偉大的地方在這裏:http://learn.jquery.com/