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();