MVC - 从ListBoxFor获取ViewModel对象

Seb*_*iva 2 c# asp.net asp.net-mvc

我在提交表单后尝试获取自己的viewmodel,我收到以下错误:"无法将'System.String []'类型的对象强制转换为'System.String'"

这是我的代码:

视图模式:

public class SoftwarePackages
{
 public string[] PermissionsList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

ASPX

<%: Html.ListBoxFor(model => model.PermissionsList, new List<SelectListItem>(), new { size = 10 })%>
Run Code Online (Sandbox Code Playgroud)

调节器

[HttpPost]
public ActionResult Index(SoftwarePackages softwarePackages)
{
  code...code...code
}
Run Code Online (Sandbox Code Playgroud)

问题是什么?

谢谢

zurdoIL

Dar*_*rov 6

以下工作对我来说很好:

模型:

public class SoftwarePackages
{
    public string[] PermissionsList { get; set; }
    public IEnumerable<SelectListItem> Items { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new SoftwarePackages
        {
            Items = new SelectList(new[]
            {
                new SelectListItem { Value = "1", Text = "item 1" },
                new SelectListItem { Value = "2", Text = "item 2" },
                new SelectListItem { Value = "3", Text = "item 3" },
            }, "Value", "Text")
        };
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(SoftwarePackages softwarePackages)
    {
        // do something with softwarePackages.PermissionsList
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

视图:

<% using (Html.BeginForm()) { %>
    <%: Html.ListBoxFor(model => model.PermissionsList, Model.Items, new { size = 10 })%>
    <input type="submit" value="OK" />
<% } %>
Run Code Online (Sandbox Code Playgroud)