我目前正在研究一個ASP.NET MVC2項目。這是我第一次在真正的MVC Web應用程序上工作。 ASP.NET MVC website確實幫助我快速入門,但我仍然對數據模型驗證有一些模糊的認識。在ASP.NET MVC中將複雜數據驗證的數據管理規則放在哪裏?
我的問題是,當涉及到複雜的驗證規則時,我不知道在哪裏管理填充的數據模型。例如,使用正則表達式驗證字符串字段非常簡單,我知道我只需要用特定的屬性修飾字段,因此數據管理規則在模型中實現。但是,如果我有多個字段需要驗證哪一個,例如需要根據特定時間規則正確設置的多個日期時間,那麼我需要在哪裏驗證它們?我知道我可以創建自己的驗證屬性,但有時候驗證會問一個特定的驗證路徑,這個驗證路徑很複雜,可以使用屬性進行驗證。
這個第一個問題也引出了一個相關的問題,那就是,在控制器中驗證模型是否正確?因爲目前這是我發現的複雜驗證的唯一途徑。但是我覺得這有點髒,我覺得它並不適合控制器的角色,也很難測試(多代碼路徑)。
謝謝。
NB:我得到了一些不錯的解決方案,在這裏,但我在等待其他的想法和一些「最佳實踐」解決方案」
我問自己同樣的問題。試圖儘可能「幹」,我應該怎麼做簡單的驗證(要求,格式等)?我應該使用DataAnnotation在視圖中執行它,並在業務層中重做相同的驗證(加上更復雜的驗證)? – 2010-05-21 12:37:55