2009-08-10 93 views
24

在Model或ViewModel上使用ViewModels和MVC(MVVM)時,驗證應該在哪裏? (或兩者兼得或不兼任)?爲什麼?尤其是針對ASP.NET MVC V2即將推出。驗證:Model或ViewModel

複雜/定製驗證如何?

+2

mvvm tag? MVC的viewmodel不是MVVM模式的視圖模型。 – 2010-08-16 00:05:47

+0

MVVM很大程度上基於MVC模式,但是如果您對您的評論進行闡述(或許有一些鏈接),我將不勝感激。 – 2010-08-16 00:13:15

回答

19

任何業務特定的驗證應該在模型中。任何網站特定的驗證都可以在Model和/或ViewModel中完成。這樣您的業務邏輯(模型)可以移動到不同的界面(Windows,Web窗體等)後面,並且您的驗證將保持不變。

5

模型。您的驗證應該在您的業務層。您的視圖模型應該只是爲了獲得您的視圖設置。

11

我會說這是經常需要在各級:)

我想了一會兒約以下驗證:

  1. 用戶輸入驗證:肯定控制器上,不會對任何類型的模型。例如:驗證碼
  2. 查看在ViewModel上驗證的相關數據(不是在ViewModel中,而是在ViewModel上)。例子:密碼確認必要的電子郵件
  3. 業務規則驗證肯定會進入模型驗證。例子:必須電子郵件折扣券應該是有效的
  4. 潛在的用例(故事,場景等)的驗證。它不驗證屬性,但驗證整個過程的正確性。應該去模型驗證(或更好地在一個單獨的層)。例如:只有3項可免費一週期間,如果沒有訂單已 投放在預定期間獲得。

注:我包括所需的電子郵件到這兩個2和3,因爲它往往取決於它所屬的地方。
如果電子郵件只起到信息的作用 - 然後驗證可以輕鬆將其推到視圖模型。如果電子郵件是應用程序的強大需求 - 這絕對是模型驗證。

第四件事實際上與驗證無關,因爲我們瞭解它。
但它也應該應用。因此其結果應該顯示給用戶。

基本上所有4種類型的驗證可以使用相同的基礎設施。但實現取決於:)...

乾杯,
德米特里。