C# MVC ListboxFor模型中的变量
我有一个列表框C# MVC ListboxFor模型中的变量,c#,asp.net-mvc,html-helper,html.listboxfor,C#,Asp.net Mvc,Html Helper,Html.listboxfor,我有一个列表框 @Html.ListBoxFor(m => m.SelectedDepartment, Model.Departments, new { @class = "form-control", @style = "height:150px", size = 4, onchange = "DepartmentSelectionChanged(this)" }) 在我的模型中 public IEnumerabl
@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.String[]”,但必须为“IEnumerable”类型 问题不在于IEnumerable/string[]的用法,而在于您传递的是一组字符串对象,而不是SelectListItem对象 您可以轻松地将其转换为:
List<SelectListItem> selectlistitems = new List<SelectListItem>();
foreach(string mystring in myarray)
{
selectlistitems.Add(new SelectListItem() { Text = mystring, Value = mystring };
}
ViewData["SelectedDepartment"] = selectlistitems;
请在设置ViewData的位置添加控制器代码。SelectedDepartment能否显示控制器
ViewData["SelectedDepartment"] =
myarray.Select(mystring => new SelectListItem() { Text = mystring, Value = mystring })
.ToList();