2015-11-16 64 views
0

的陣列如何設置的SelectList的SelectList選擇的值不從整數

var attributeSet = attribute.AttributeSetAttributes.Where(c => c.AttributeSetID == id).Select(c => c.AttributeID).ToArray(); 

    var attributeList = new SelectList(db.CatAttributes.Where(c => c.IsActive), "ID", "FullName", attributeSet); 
    ViewBag.AttributesList = attributeList; 

和在視圖中我用它像

@Html.ListBoxFor(model => model.Attributes, (SelectList)ViewBag.AttributesList, new { @class = "form-control" }) 

在上述attributeSet得到integer selectedValue屬性分配值,它們的選定特性應該在SelectList => attributeList是真實的,如果我給它顯示了選定的屬性= true只有一個值,但是當我傳遞數組或列表也不會設置所選擇的屬性= true

+3

使用'MultiSelectList',但它不是真的有必要添加的最後一個參數,如果你綁定到一個屬性 - '@ Html.ListBoxFor(M => m.attributeSet Model.attributeList)'因爲它的價值決定選擇什麼(最後一個參數是不理) –

+0

顯示你的模型和視圖 –

+0

@StephenMuecke看到我的編輯 –

回答

0

所以我固定它,我用來代替的SelectList MultiSelectList,並通過第三個參數爲一個數組

var attributeSet = attribute.AttributeSetAttributes.Where(c => c.AttributeSetID == id).Select(c => c.AttributeID).ToArray(); 

var attributeList = new MultiSelectList(db.CatAttributes.Where(c => c.IsActive), "ID", "FullName"); 
ViewBag.AttributesList = attributeList; 

var model = new AttributeSetViewModel() 
     { 
      AttributeSet = attribute, Attributes = attributeSet 
     }; 

和在瀏覽

@Html.ListBoxFor(model => model.Attributes, (MultiSelectList)ViewBag.AttributesList, new { @class = "form-control" }) 

這設定我所選擇的屬性=真。

感謝@Stephen Muecke的想法!

+1

正如我所說,這是毫無意義的。只需使用'myModel.Attributes = attributeSet;返回查看(基於myModel);'和刪除'SelectList'構造函數的最後一個參數(這就是如何模型綁定的作品!) –

+0

是它也能工作! –