2010-01-18 42 views
2

我希望看到SO社區對此的迴應。我明白,ViewModel基本上用來將視圖與數據綁定。當表單提交時,返回的對象(模型綁定)應該是ViewModel還是實體?我知道ViewModel是一個實體,但我在這裏理論上正在討論。我想確保我和我的團隊瞭解這些概念。ViewModel無處不在!

回答

0

這是確定的,只要你不妥協的設計,爲lazyness兩者都做。例如。綁定到複雜的實體並不容易 - 一個例子是如果實體沒有無參數的構造函數 - 並且如果您避免使用這些實體來簡化綁定......這很糟糕。這就像所有的變量「字符串」,只是因爲你的UI控件無法理解日期或浮點數。它也可能導致愚蠢的類DTO和貧血域模型。 但是,如果您不需要智能實體 - 可以在模型綁定中使用它們。

一如既往,需要經驗和良好品味才能做出決定。沒有簡單的規則。避免UI對域名設計產生影響的一種方法是首先開發域名級別(TDD在這裏是一個很好的幫助)。另一種方法是爲你的域層提供幾個「客戶端」 - 不同的需求將使你將核心功能提取到域層,將特定的東西(如表現屬性和格式)移動到適當的層/視圖模型。

0

我使用ViewModel將數據傳遞到頁面並獲取數據。我所有的表單首先進入一個ViewModel,我將運行任何需要的驗證,然後將其轉換爲相應的DTO/Entity。

+1

但是,如果您的模型綁定器可以綁定到適當的DTO並應用驗證,爲什麼要進行轉換?只是想知道... – RailRhoad 2010-01-18 16:35:25

+1

@ RailRhoad-想想像「我同意條款和條件」這樣的事情。 – RichardOD 2010-01-18 16:37:29

+0

@ RichardOD-對不起,我真的不知道你的意思! – RailRhoad 2010-01-18 16:43:24

3

我喜歡給一個視圖模型到視圖,並有ModelBinder的綁定到我的實體企業。

我的ViewModels通常包含基於顯示數據的小位(例如是否要顯示窗口小部件),所以他們並不真正需要綁定。

善良,

+0

這幾乎是我所做的,但我注意到很多人綁定到他們的視圖模型。 – RailRhoad 2010-01-18 16:36:56