Так как у вас есть значения элементов, предоставленные в определении ViewBag
, как это, которое ясно указывает на строковые значения:
ViewBag.ItemsBag = db.Items.Select(v => new SelectListItem
{
Text = v.ItemName,
Value = v.ItemId.ToString() // implies all values are strings
});
Тогда свойство, связанное с DropDownListFor
/ ListBox
, должно иметь тип List<string>
или string[]
, чтобы связать его правильно. Использование ICollection<Item>
не будет связывать, потому что это сложный объект, в то время как помощнику требуются типы значений (числовые типы / строки) для привязки.
Следовательно, вы должны сначала создать свойство с типом List<string>
:
public List<string> SelectedValues { get; set; }
А затем используйте ListBoxFor
помощник с этим свойством вместо:
@Html.ListBoxFor(model => model.SelectedValues, new MultiSelectList(ViewBag.ItemsBag, "Value", "Text", Model.ItemsSelected.Select(x => x.Value)), new { @class = "form-control features-segments select2-multiselect-checkbox", multiple = "multiple" })
Примечание:
Если свойство ItemId
имеет тип int
(и все значения могут быть преобразованы в int
), попробуйте использовать тип List<int>
/ int[]
вместо List<string>
/ string[]
:
public List<int> SelectedValues { get; set; }