對於MVC3,我應該設計我的視圖模型,使其有一個綁定到視圖(DisplayModel),並且將其一個張貼回控制器(EditModel)?在MVC3中,我應該有單獨的「編輯」模型還是「顯示」模型?
爲了澄清,我不問數據模型與視圖模型 - 我知道把我的視圖/控制器綁定到數據/域模型並不好。
我也沒有問過在兩個單獨的視圖中共享一個模型,一個視圖用於顯示數據,另一個視圖用於編輯數據。
相反,我在詢問用於編輯數據的一個視圖,以及與視圖綁定的模型與綁定到控制器操作的模型。
換句話說,如果這是我的看法:
@model MyApp.Models.CustomerModel
如果我的控制器動作的樣子:
public ActionResult Index(CustomerModel model)
或者:
public ActionResult Index(CustomerEditModel model)
在一個點上,我們做後者(單獨)。但最近,我們開始做前者(共享)。
其原因的變化是因爲:
隨着MVC3不顯眼的驗證,如果我用我的模型進行驗證DataAnnotations,這是需要在這兩種模式,如果他們是分開的(在顯示器上模型來映射客戶端驗證,以及用於服務器端驗證的編輯模型)。
隨着我們的應用程序的成熟,我們意識到我們的顯示和編輯模型是95%相同的,除了我們視圖模型中的選擇列表。我們現在已將這些移至shared class,並通過現在的視圖傳遞這些內容。
但我已經看到了指向具有共享模型視圖/控制器是一個壞主意,這it violates分離關注一些其他的討論。
有人能幫我理解這兩種方法的權衡嗎?
偉大的問題,和我一直在與我自己掙扎。我在我開發的最後一個主要應用程序中都有這兩種情況。當他們流浪到很遠的地方時,我做了一個單獨的,但在大多數情況下他們是相同的。 – Patricia