MVC ListboxFor模型中的变量

时间:2014-04-29 09:54:11

标签: 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 IEnumerable<string> SelectedDepartment { get; set; }

然而,在返回视图时,我收到错误

  

System.InvalidOperationException:具有键的ViewData项    'SelectedDepartment'的类型为'System.String []',但必须是'IEnumerable'类型。

有什么问题?

我该如何纠正?

1 个答案:

答案 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;