MVC Listbox用于模型中的变量
本文关键字:变量 模型 Listbox 用于 MVC | 更新日期: 2023-09-27 18:00:47
我有一个列表框作为
@Html.ListBoxFor(m => m.SelectedDepartment, Model.Departments,
new { @class = "form-control", @style = "height:150px", size = 4,
onchange = "DepartmentSelectionChanged(this)" })
在我的型号中
public IEnumerable<string> SelectedDepartment { get; set; }
然而,在返回视图时,我得到了一个错误作为
System.InvalidOperationException:具有键的ViewData项"SelectedDepartment"的类型为"System.String[]",但必须为"IEnumerable"类型。
怎么了?
我该如何更正?
具有关键字"SelectedDepartment"的ViewData项的类型为"System"字符串[]',但类型必须为'IEnumerable<SelectListItem'。
问题不在于IEnumerable
/string[]
的使用,而在于您传递的是一组string
对象,而不是SelectListItem
对象。
你可以很容易地转换它:
List<SelectListItem> selectlistitems = new List<SelectListItem>();
foreach(string mystring in myarray)
{
selectlistitems.Add(new SelectListItem() { Text = mystring, Value = mystring };
}
ViewData["SelectedDepartment"] = selectlistitems;
如果你使用LINQ:,它会更短
ViewData["SelectedDepartment"] =
myarray.Select(mystring => new SelectListItem() { Text = mystring, Value = mystring })
.ToList();