2009-10-22 70 views
1

最近,我一直在探索什麼是在底層模型複雜時組織ASP.NET MVC應用程序表示層的最佳方法。 MVVM架構及其ViewModel對象到目前爲止都出現了。但是,我不確定什麼時候這種架構是最好的實踐。關於ASP.NET MVC,Model和ViewModel的分離問題?

  • ViewModel對象是否可以包含Model對象?
  • 如果使用MVVM,建議在視圖上使用Model對象嗎?
  • 驗證應該在ViewModel或Model類上實現嗎?
  • 業務層(服務層)應該瞭解ViewModel,誰負責ViewModel和Model之間的映射?
+0

你可能是指ViewModel而不是ModelView ... – 2009-10-22 17:17:55

+0

確實羅伯特,感謝您的糾正。 – 2009-10-23 07:22:54

回答

3
  • 大部分的時間,模型視圖對象只是抱着模型對象時,我們需要發送多種類型的人,或者當我們需要通過幾個其僅需要瀏覽多個屬性的容器。
  • 如果視圖的工作是顯示模型的細節,並且沒有其他東西可以傳遞到視圖,爲什麼不呢?
  • 取決於。您可以使用ModelView和Model類僅用於在圖層之間傳輸數據。並通過cutom模型粘合劑或服務層來進行驗證。
  • 他們沒有理由不知道ModelViews。但通常您只需從控制器的服務層獲取請求的模型,然後將其直接或在ModelView中傳遞給View。

順便說一句,我不會把ModelView視爲一種架構。這更像是「當你需要時使用一個」。畢竟,在這樣做將數據傳遞到視圖中沒有點:

class SomeModelView { 
    public MyModel model { get; set; } 
} 

只需通過MyModel如果這是不夠的,以便完成其工作。

+0

謝謝你的回覆。你的回答非常有幫助。 4.問題出現了,因爲業務邏輯將從各個角度使用:UI,API和其他具有完全不同UI技術的應用程序。這就是爲什麼我問自己業務邏輯返回適合第一個UI,ASP.NET MVC應用程序的ViewModel的好處。同樣在WPF中,ViewModel顯然是表示層的一部分。 – 2009-10-23 09:11:21

+0

很高興它有幫助:) – 2009-10-23 09:48:35

+0

@çağdaş:那麼你會同意,如果你的模型類足夠在你的視圖中使用,那麼你不應該需要ViewModel對象? IE瀏覽器。這是不必要的併發症? – 2009-11-08 07:10:34