2014-04-23 36 views
1

我有一組下拉列表,它們被動態地通過循環列表中加入:動態下拉不具有值

for (int i = 0; i < Model.WindowGlassItems.Count; i++) 
{ 

@Html.DropDownListFor(gu => gu.WindowGlassItems[i], Model.WindowGlassTypes, "-- Select --", new { @class = "form-control glass-multi-select", id = "Glass" + i }) 


} 

WindowGlassItems是類型List<int?> 下拉的未示出,即使該列表中選擇的項目設置爲值

是什麼問題?

編輯,目前使用這個工具,它的作品,但林不開心,還是希望能有一個正確的MVC解決方案,如果可能的

@Html.Hidden("HiddenWindowGlassItems", string.Join(",", Model.WindowGlassItems.Select(s => s.ToString()).ToArray())) 

JS:

var glassCSV = $("#HiddenWindowGlassItems").val(); 
    if (glassCSV != null) { 
     var array = glassCSV.split(','); 

     for (var i = 0; i < array.length; i++) { 
      $("#Glass" + i + " option[value='" + array[i] + "']").attr("selected", "selected"); 
     } 

    } 

FYI

的選擇有這樣的名字: WindowGlassItems [0]

<select name="WindowGlassItems[0]" id="Glass0" data-val-number="The field Nullable`1 must be a number." data-val="true" class="form-control glass-multi-select"><option value="">-- Select --</option> 
<option value="637">Tint</option> 
etc... 

<select name="WindowGlassItems[1]" id="Glass1" data-val-number="The field Nullable`1 must be a number." data-val="true" class="form-control glass-multi-select"><option value="">-- Select --</option> 
<option value="637">Tint</option> 
etc... 

等等...

+0

我想,這應該是這樣的 - ** @ Html.DropDownListFor(區=> gu.WindowGlassItems [I] ,新的SelectList(Model.WindowGlassTypes,「Id」,「YourGlassItemName」,YourSelectedVal),新的{@class =「form-control glass-multi-select」,id =「Glass」+ i})** –

+1

告訴我們您將值分配給Model.WindowGlassTypes。 – Yorro

+0

Model.WindowGlassTypes的類型爲List raklos

回答

2

選定值到底這工作:

(這個答案幫助:MVC looping in razor, generated dropdownlist not value selected

for (int i = 0; i < Model.WindowGlassUnitsCount; i++) 
{ 

     @Html.DropDownListFor(gu => gu.WindowGlassItems[i], 
     new SelectList(Model.WindowGlassTypes,"Value","Text", Model.WindowGlassItems[i]), 

     //Model.WindowGlassTypes, 

     "-- Select --", new { @class = "form-control glass-multi-select", id = "Glass" + i }) 


} 
0

如果你想已預先選定的項目,你Model.WindowGlassTypes集必須是類型的IList的。 System.Web.Mvc.SelectListItem具有一個布爾型屬性Selected,因此您需要將其設置爲true以便選擇一個您希望選擇的元素。

+0

WindowGlassTypes是List ,通常您不需要設置此布爾值? – raklos

+0

你必須指定從我的經驗中選擇哪一個幫手。 – milagvoniduak

2

DropDownListFor在任何地方都沒有得到選定的值。表達go => go.WindowGlassItems[i]只是指定模型映射(名稱和HTML的元素編號得到這裏生成)

for (int i = 0; i < Model.WindowGlassItems.Count; i++) 
{ 

    @Html.DropDownListFor(
     gu => gu.WindowGlassItems[i], // This is the selected value. 
     new SelectList(Model.WindowGlassTypes, Model.WindowGlassItems[i]) 
     "-- Select --", 
     new { @class = "form-control glass-multi-select", id = "Glass" + i }) 
} 

通過與new SelectList()

+0

爲此,「WindowGlassTypes」必須是項目的集合...而不是「SelectList」類型。在SelectList構造函數中,我認爲最好定義包含Text和Value的屬性。 – Romias