2010-02-26 49 views
6

我有一個ASP.NET MVC應用程序,有很多下拉列表和多選列表。基本上,很多選項列表。ASP.NET MVC模型vs ViewData的選擇列表

我的問題是;將這些列表作爲模型的一部分傳遞給視圖還是作爲ViewData?

我目前將它們作爲ViewData傳遞給我,因爲我並不真的需要它們在模型上,並且它們似乎可能體積龐大地傳遞給模型(我得到所選項目或項目,這實際上是我需要的)。在缺點方面,ViewData需要在視圖上進行投射,而不像強類型模型。

這裏有最佳做法嗎?即使對這兩者中的優點和缺點的建議,將不勝感激。

回答

6

我建議你使用ViewModels來傳遞這些數據。這很容易使用ViewData與「魔術字符串」,我更喜歡使用intellisense,而不是試圖記住「魔術字符串」。而且您不需要在控制器中創建SelectLists。只需使用一些IEnumerable並在視圖中使用MvcContrib中的ToSelectList擴展方法。

+1

+1作爲慣例,我們已盡全力去除魔術字符串。不僅僅是你提到的,因爲intellisense是太棒了,但真正的啓發是魔術串總是編譯好。然後他們有機會在運行時炸燬。 Ouch ...強大的類型在編譯時會爆炸,這使得錯誤更易於檢測。 – 2010-02-26 16:44:33

-1

我傾向於使用ViewData,如果我只有1項傳遞給視圖。所以,如果你發送多個對象,並需要填充多個下拉列表,我會創建一個視圖模型。我還會在Web應用程序項目中創建該視圖模型,因此如果您的視圖模型具有SelectList對象,則不需要在您的域模型中引用MVC dll。

+0

這是一件好事嗎? – Lankymart 2015-03-17 11:34:11