我看到很多MVC示例,其中域對象直接傳遞到視圖,如果您的視圖很簡單,這將工作得很好。asp.net MVC應該視圖模型封裝域模型?
常見的選擇是擁有一個視圖模型,它具有與您的視圖模型+視圖可能需要的任何額外屬性(例如'confirmPassword')完全相同的屬性。
在做太多的閱讀和發現AutoMapper之前,我開始創建自己的視圖模型變體,其中域對象(或多個域對象)只是視圖模型的屬性。
我做了壞事嗎?這種方法會帶來哪些問題或好處? 在什麼情況下,這種做事方式可以正常工作?
我看到很多MVC示例,其中域對象直接傳遞到視圖,如果您的視圖很簡單,這將工作得很好。asp.net MVC應該視圖模型封裝域模型?
常見的選擇是擁有一個視圖模型,它具有與您的視圖模型+視圖可能需要的任何額外屬性(例如'confirmPassword')完全相同的屬性。
在做太多的閱讀和發現AutoMapper之前,我開始創建自己的視圖模型變體,其中域對象(或多個域對象)只是視圖模型的屬性。
我做了壞事嗎?這種方法會帶來哪些問題或好處? 在什麼情況下,這種做事方式可以正常工作?
將域模型直接暴露給視圖並沒有什麼固有的壞處。主要風險來自於暴露你不意味的屬性,例如Employee對象上的薪水字段。如果您要返回JSON,請務必小心。
另一件需要注意的事情是,當你從編輯表單綁定回來時。您應該瞭解涉及的具體risks。基本上,惡意用戶可以將字段添加到POST中,恰好匹配您不希望可編輯的字段。我總是綁定到傳遞到服務中的中間對象,然後將其映射回域。
不好?無法使用Automapper。 ;)
好嗎?沒有什麼可以想到的。
我不認爲你做過任何可怕的事情。對你起作用嗎?如果是這樣,爲什麼不呢?
如果封裝了Domain-Model,那麼ViewModel的目的是什麼 – Omu 2010-05-05 19:04:28
主要原因是聚合多個域模型,例如:Product,Basket,Navigation等 – Myster 2010-05-05 20:50:55