我有一个列表框
@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'类型。
有什么问题?
我该如何纠正?
答案 0 :(得分:0)
具有键&#39; SelectedDepartment&#39;的ViewData项。属于&#39;系统。字符串 []&#39;但必须是类型&#39; IEnumerable&lt; SelectListItem &gt;&#39;。
问题不是IEnumerable
/ string[]
的使用,而是您传递一组string
个对象而不是{{{{{{ 1}}对象。
您可以轻松转换它:
SelectListItem
如果使用LINQ,它会更短:
List<SelectListItem> selectlistitems = new List<SelectListItem>();
foreach(string mystring in myarray)
{
selectlistitems.Add(new SelectListItem() { Text = mystring, Value = mystring };
}
ViewData["SelectedDepartment"] = selectlistitems;