2011-02-03 57 views
1

對於當前的MVC3項目,我有一個模型有多個頁面供輸入。該對象設置了必填字段,但它們位於不同的頁面上。這意味着我無法對ModelState.IsValid進行簡單的檢查。相反,我會檢查當前頁面是否具有所需的所有值,然後允許用戶進入下一個頁面。這似乎並不理想。跨多頁MVC模型驗證

一個我不喜歡的主要事情是,具有比第一其它頁面上的必填字段意味着回傳和全面驗證失敗已經發生了所以接下來的頁面上的任何所需的字段已標記的事實即使用戶從未去過該頁面,也處於錯誤狀態。

是否有任何驗證具有多個輸入頁面的實體的最佳實踐?

回答

3

您應該使用視圖模型而不是您的域模型。大豆你可以將你的領域模型分成嚮導的每個步驟的多個視圖模型。這裏的another answer你可能會覺得有用。

+0

+1。我認爲視圖模型是MVC中較少理解的構造之一,但總體而言是與DDD相關的範例。很多人試圖強迫他們的實體扮演這兩種角色,而且這往往比非實體方法更令人頭疼。 – 2011-02-03 19:14:58

0

這是爲什麼建議爲每個頁面使用單獨的ViewModel作爲最佳實踐的原因之一,並且不鼓勵在ViewModel中直接使用實體類。

使用單獨的ViewModels,您可以根據需要定製基於屬性的驗證。這將使事情複雜化,因此您需要找到一種方法來在ViewModel和您的實體之間進行映射。

+0

太棒了,謝謝。這看起來正是我所需要的。 – 2011-02-03 19:19:10