2010-09-19 50 views
0

這是一種兩個舞伴的:MVC Dropdownlists - 如何設置虛擬值

1)應該在哪裏我可以餵我的DDL的距離?現在我在我的viewmodel中設置了List。我見過很多人在ViewData []中設置列表。那是我應該做的,爲什麼?

我注意到,DDL值不保留在HttpPost中,我必須在視圖模型中重置它們。如果我使用ViewData []我假設這不是必需的?

2)我填充我的DDL從LinqToSQL的由

new SelectList(dataContext.Products.ToList(),"ID","Name");

我應該如何添加像 「 - 選擇一個產品展示 - 」 VAL =一個空場 「 - 1」?

+0

您將一直需要重新創建下拉列表值。只有選定的表單值被髮布到服務器。一旦視圖發送到瀏覽器,ViewData []就會丟失。 – Ryan 2010-09-19 17:26:57

回答

1

處理下拉列表數據的方法有很多種。我個人使用過濾器將視圖注入視圖模型(至少90%的時間),但我不會去那裏看。您可以使用Insert方法添加佔位符項目。

var options = dataContext.Products.Select(p => new OptionItem(p.Id, p.Name)).ToList(); 
options.Insert(0, new OptionItem(-1, "--Select a Product--")); 
// now use the options collection for the drop down list source 

注意我沒有突起,從產品到OptionItem,因爲你並不真正需要查詢整個產品的對象,如果你只是想兩個字段。

+0

適合我。 - 謝謝 – Jason 2010-09-19 17:57:01