ASP.NET MVC 的ViewModel | mvc model get set
有鑑於蠻多初學ASP.NETMVC開發人員對ViewModel的不了解,甚至於有些公司雖標榜採用ASP.NETMVC開發專案,但卻沒有詳細規範並定義ViewModel的使用方式而產生很多的誤用、亂用、隨便用的亂象,所以對ViewModel做個說明。 首先要說的是,ASP.NETMVC的ViewModel不同於「MVVM(Model–View–ViewModel)」架構下的ViewModel,所以有關Silverlight,WPF所謂的ViewModel並不在說明的範圍內,也不要留言問我這兩個應用的ViewModel相關問題,因為我不熟。 View與Model在ASP.NETMVC的開發,通常一個View的Model只能使用一種Model類別,例如以下的範...
有鑑於蠻多初學 ASP.NET MVC 開發人員對 ViewModel 的不了解,甚至於有些公司雖標榜採用 ASP.NET MVC 開發專案,但卻沒有詳細規範並定義 ViewModel 的使用方式而產生很多的誤用、亂用、隨便用的亂象,所以對 ViewModel 做個說明。
首先要說的是,ASP.NET MVC 的 ViewModel 不同於「MVVM(Model – View – ViewModel)」架構下的 ViewModel,所以有關 Silverlight, WPF 所謂的 ViewModel 並不在說明的範圍內,也不要留言問我這兩個應用的 ViewModel 相關問題,因為我不熟。
View 與 Model
在 ASP.NET MVC 的開發,通常一個 View 的 Model 只能使用一種 Model 類別,例如以下的範例,
顯示一筆資料:
顯示很多筆資料:
但如果我希望在一個頁面上去同時顯示產品資料以及這個分類底下的所有產品的資料時,應該怎麼做呢?
相信初學 ASP.NET MVC 的開發者都會在這裡給卡住,因為一個 View 只能使用一個 Model 類別,無法指定多個 Model 類別的資料給 View,有的開發者就會用以下的方式來處理,
如上圖所示,在 Controller Action 中還是一樣回傳一個 Model 類別的資料,但是分類所屬的 Products 則是放在ViewBag(或是 ViewData)內,這樣一來前端 View 就可以拿到資料來使用,如下:
1: @model ViewModelSample.Models.Categories 2: 3: @{ 4: ViewBag.Title = "DetailsTest"; 5: Layout = "~/Views/Shared/_BootstrapLayout.cshtml"; 6: } 7: 8: <h2>Cat...