2014-07-22 88 views
0

我正在研究爲具有多個類別(在列表中預定義)的公司對象創建編輯頁面。我已經通過ViewBag發送了列表,並且具有用戶在Array中的Create頁面中選擇的類別,這要歸功於ViewModel。列表框中的多個默認選定項目

我找不出一種方法讓ListBox預先填充數組中的多個值。我正在玩jQuery,並能夠得到一個值的選擇,但是當我嘗試不止一個沒有出現。有任何想法嗎?

@Html.ListBox("Category", new SelectList(ViewBag.Category, "Text", "Value")) 

回答

2

SelectListItem對象有一個Selected屬性來表明這一點。所以我想這會歸結爲你如何建立SelectList。目前,你這樣做:

new SelectList(ViewBag.Category, "Text", "Value") 

其中一期工程,但爲您提供了個人SelectListItem沒什麼控制。您可以構建一個IEnumerable<SelectListItem>using the same method overload,而不是構建SelectList。最初可能如下所示:

ViewBag.Category.Select(c => new SelectListItem 
{ 
    Text = c.Text, 
    Value = c.Value 
}); 

此時您可以更好地控制各個項目。現在只需確定應選擇哪一個。你如何確定?它是Category對象上的一個屬性嗎?像這樣的東西?:

ViewBag.Category.Select(c => new SelectListItem 
{ 
    Text = c.Text, 
    Value = c.Value, 
    Selected = c.Selected 
}); 

或許一些其他的條件?:

ViewBag.Category.Select(c => new SelectListItem 
{ 
    Text = c.Text, 
    Value = c.Value, 
    Selected = c.SomeValue == SomeCondition 
}); 

你怎麼確定是你,最好在這裏被使用的東西,你可以在邏輯上添加爲後盾的模式。

+0

有趣的是,我沒有想過這樣做。至於如何確定應該選擇哪些,我在View中有一個數組,並且應該選擇這些數值。我在想像@ Html.ListBox(「Category」,新的MultiSelectList(ViewBag.Category,「文本」,「價值」,「在這裏的數組值」))。不知道這是否會奏效。 –

相關問題