2015-05-25 29 views
-1

我正在使用MVC和實體框架開展一個項目。目前,我正在做的是我正在使用控制器在它們的Action方法中使用由實體框架自動生成的模型直接執行「TryUpdateModel」。控制器應該直接與自動生成的模型進行交互嗎?

我的問題是,這是一個很好的/推薦的方法?當然,我仍將模型傳遞給存儲庫類以供進一步處理和保存。

我很好奇。如果我爲自動生成的模型創建一個「包裝器」模型會怎麼樣? ViewModel可以成爲這個「包裝」模型嗎?

+0

與論壇網站不同,我們不使用「謝謝」或「任何幫助表示讚賞」,或在[so]上簽名。請參閱「[應該'嗨','謝謝',標語和致敬從帖子中刪除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -removed-from-posts)。 –

+0

注意!請記住! – bloodfire1004

回答

1

你的想法很好。最好使用包裝模型而不是自動生成的模型。由於自動生成的模型具有DAO(數據訪問對象)的作用,並且有時不符合您對View Model的需求。

實際視圖模型應該是包裝模型。因爲有時你只想要你的DAO的自動生成模型)。

+0

有時候你需要組合不同的DAO塊。 –

1

您應該避免直接更新模型或確保明確設置允許綁定哪些屬性。原因在於您使用的方法是將您的代碼打開爲稱爲overposting的漏洞。

重疊發佈簡而言之就是黑客修改表單以注入它們不應該能夠更新的屬性。看到這裏:http://odetocode.com/blogs/scott/archive/2012/03/11/complete-guide-to-mass-assignment-in-asp-net-mvc.aspx

除此之外,它是一個設計desicion像任何其他。這兩種方式都有一些優點和缺點。如果按照自己的方式執行,則可以減少編寫/維護的代碼。但是,一旦你需要做出改變,你的靈活性就會降低,因爲表單和模型需要匹配,但這並不總是構建表單的最佳方式。

相關問題