Asp.net-Mvc-4
ViewModel 還是 ViewBag?
我對 MVC4、EF5 和 ASP.Net 還很陌生,而且我似乎無法在任何地方找到一個好的答案。
基本上,一切都應該通過視圖模型完成還是可以合併視圖包?
假設我有一個填充下拉列表的方法,並且我正在使用視圖模型來表示視圖的輸出。
我可以使用
Viewbag.DropDown = PopulateDropdown();還是將它合併到 ViewModel 中,通過創建一個屬性來保存List<SelectListItem>創建者PopulateDropdown();?我知道 ViewBag 有多方便,但我還沒有看到任何不使用它的充分理由?如果有人也可以為我提供更多見解,那就太好了。
基本上,一切都應該通過視圖模型完成還是可以合併視圖包?
一切都應該在視圖模型中完成。這就是視圖模型。您為滿足視圖要求而專門定義的類。不要將 ViewBags 與 ViewModels 混合使用。資訊從何而來的觀點不再清晰。要麼只使用視圖模型(我推薦的方法),要麼只使用 ViewBags。但是不要混用2。
因此,在您的特定範例中,您將在視圖模型上有一個類型的屬性,
IENumerable<SelectListItem>並且在您的視圖中,您將使用 Html.DropDownListFor 幫助器的強類型版本綁定到模型:@Html.DropDownListFor(x => x.ProductId, Model.Products)顯然,這些只是我的 2 美分。其他人會說混合 ViewModels 和 ViewBags 很好,我尊重他們的意見。