2013-03-21 26 views
3

我剛開始第一次使用MVC項目,而且遇到了一個我並不期待的問題:太多的模型。我是否在MVC ASP.NET中不必要地複製模型?

沒有太多不同的型號,但太多了,它們略有不同,但幾乎完全一樣。

我有一個相當複雜的頁面,有幾個組合框,明細對象的列表,我需要跟蹤的其他某種外在無關的事情。更多的信息進入視圖比我回來(這很好)。

我有一個領域模型,它始終保持不變。 (1 model)

我有一個單一的使用視圖模型,這是域模型和一些額外的信息包裹它。 (1個模型)

我有一個單次使用形式模型,它是視圖模型的與它裏面的域模型的一個空殼拷貝與它驗證東西的副本。 (2款)

我需要今天下午更改屬性的類型,我有三個不同的地方去改變它。它似乎我有太多的車型,其是一次性使用。對於那些應該比傳統ASP.NET更容易的東西似乎有很多工作。

我的問題是:我做對了嗎?應該有很多模型,還是我錯過了一些明顯的東西?

+0

有人打算髮表意見嗎? – Jonathan 2013-04-10 07:18:55

+1

對,我完全理解你。我有同樣的問題,我沒有真正解決它,但我試圖使用常識。我會盡可能地(重新)使用域模型。如果我需要添加一些「額外信息」,具體取決於它們的大小,我將使用ViewBag或ViewModel。在創建表單模型之前,我會嘗試重新使用視圖模型。但是,是的,你想要遵循所有不錯的模式,那麼你需要三種模式。 – 2013-04-12 10:39:27

回答

1

不能完全確定是什麼在你的榜樣的形式模型是 - 你使用限制來自客戶端的能力後場或者使用以映射到您的域名?

在我自己的MVC網站中,我將有一個域模型(可能只是一個本地域或來自遠程WCF服務),我將其中一個映射到我的個人ViewModels中,以便在屏幕上呈現並接收帖子後面。這些還包含我的驗證(無論是註釋還是流利等)。

任何屬性名稱的變化將被限制在相關頁面的ViewModel和域中。

如果您處於在域模型之間複製屬性的情況,那麼某種基本視圖模型結構可以很好地爲普通實體提供服務,但總體上它並不是我個人認爲的大規模開銷。