2011-11-07 16 views
2

AFAIK中,有兩種將數據傳遞給控制器​​視圖的方法:一種是鬆散類型的(使用ViewBag或ViewData),另一種是強類型的。由於強大的編譯時間檢查,大多數人推薦後者。何時使用ViewModel以及何時不在Asp.net MVC

在動態Web應用程序中,我們遇到了需要將多個實體從控制器傳遞到視圖的場景。在這種情況下,可以將單個實體作爲模型傳遞給ViewBag詞典。或者可以創建一個全新的ViewModel類,將各種實體合併,然後將其傳遞給視圖。

最近我遇到了這樣的問題;我需要通過一個類別模型,其中包含子類別列表和產品註冊的屬性。然後在視圖中,我需要顯示子類別,並確保產品集合上的分頁發生在10個以上的產品上。因此,我無法爲類別模型或產品模型使用強類型視圖。

本解決方案由Post中的關注對象tvanfossonUfuk Hacıoğulları(非常感謝兩者)提供。那就是使用ViewModel。我仍然在努力理解和研究它,這似乎是正確的解決方案。

問題:這是處理這種情況的更好方法嗎?此外,什麼時候推薦使用ViewModel以及何時繞過它以ViewBag & a Model。

回答

6

Viewmodel類的唯一目的是包含(強類型)要通過操作方法發送到視圖的數據。

因此,在您提到的問題中的答案建議創建一個Viewmodel類,其中包含您視圖中需要的所有數據的屬性。

Viewbag使用的優點是您沒有額外開銷來創建單獨的類。 缺點是您沒有編譯時類型檢查和智能感知可用。

+0

真的很棒的回答隊友。你似乎使用了0%無關緊要的詞語。謝謝 !! –

相關問題