Asp.net mvc 4 @Html.LisboxFor多个项目的模型绑定

Asp.net mvc 4 @Html.LisboxFor多个项目的模型绑定,asp.net-mvc-4,model-binding,html.listboxfor,Asp.net Mvc 4,Model Binding,Html.listboxfor,我的班级是 public partial class Team { public int TeamId { get; set; } public string TeamName { get; set; } public string TeamDescription { get; set; } public virtual IList<Trials> Trials { get; set; } } 公共部分

我的班级是

public partial class Team
    {
        public int TeamId { get; set; }
        public string TeamName { get; set; }
        public string TeamDescription { get; set; }
        public virtual IList<Trials> Trials { get; set; }
    }
公共部分类团队
{
public int TeamId{get;set;}
公共字符串TeamName{get;set;}
公共字符串TeamDescription{get;set;}
公共虚拟IList试验{get;set;}
}
审判是另一个过程

 public partial class Trials
    {

        public int TrialID { get; set; }
        public string Name { get; set; }
        public int TrialTyp_RefID { get; set; }
        public bool isChk { get; set; }

        public virtual ICollection<Team> Team { get; set; }
    }
公开部分班级考试
{
public int TrialID{get;set;}
公共字符串名称{get;set;}
public int TrialTyp_RefID{get;set;}
公共bool isChk{get;set;}
公共虚拟ICollection团队{get;set;}
}
在我看来,我正在尝试将ListBoxFor与团队内部的测试绑定在一起

@model Trials.Classes.Team
  <td colspan="2">          
              @Html.ListBoxFor(model=> model.Trials,
                      new SelectList(ViewBag.trials,"TrialID", "Name"),                   
                        new { @class = "chosen-select", data_placeholder = "Select Trials...", style = "width:500px;", tabindex = "4" }
                        )
           </td>
@model Trials.Classes.Team
@Html.ListBoxFor(model=>model.Trials,
新选择列表(ViewBag.trials、“TrialID”、“Name”),
新建{@class=“selected select”,data_placeholder=“select Trials…”,style=“width:500px;”,tabindex=“4”}
)

我无法为控制器中的试算获取任何值。它显示为null,但我从列表框中选择了多个值。

多个选择仅发回一个基元值数组。它不会回发复杂对象的集合

您需要一个具有属性的视图模型来绑定所选的
Trials

public class TeamVM
{
  public int TeamId { get; set; }
  ....
  public int[] SelectedTrials { get; set; }
  public SelectList Trials { get; set; } // Assign this in your controller rather than using ViewBag
}
那么在你看来

@Html.ListBoxFor(m => m.SelectedTrials, Model.Trials)

回发时,
Team.SelectedTrials
将包含和数组所选的
TrialID
值。

我将Team类更改为

  public partial class Team
        {
            public int TeamId { get; set; }
            public string TeamName { get; set; }
            public string TeamDescription { get; set; }
            public virtual IList<Trials> Trials { get; set; 
            public int[] AuthorisedTrials { get; set; }
    }
公共部分类团队
{
public int TeamId{get;set;}
公共字符串TeamName{get;set;}
公共字符串TeamDescription{get;set;}
公共虚拟IList试验{get;set;
public int[]authorizedTrials{get;set;}
}
以及

@model Trials.Classes.Team
  <td colspan="2">          
              @Html.ListBoxFor(model=> model.AuthorisedTrials ,
                      new SelectList(ViewBag.trials,"TrialID", "Name"),                   
                        new { @class = "chosen-select", data_placeholder = "Select Trials...", style = "width:500px;", tabindex = "4" }
                        )
           </td>
@model Trials.Classes.Team
@Html.ListBoxFor(model=>model.authorizedTrials,
新选择列表(ViewBag.trials、“TrialID”、“Name”),
新建{@class=“selected select”,data_placeholder=“select Trials…”,style=“width:500px;”,tabindex=“4”}
)

在我的控制器中,我能够获得所选试验的Vlaues

谢谢Stephen…再次感谢您澄清我们不能这样做…我已经尝试了您建议的字符串数组,并且能够在字符串数组中获得值…但是我想知道如何直接将其与团队cla中的Trials对象绑定ss…再次感谢