我的班级
public partial class Team
{
public Team()
{
this.Trials = new HashSet<Trials>();
}
public int TeamId { get; set; }
public string TeamName { get; set; }
public string TeamDescription { get; set; }
public virtual ICollection<Trials> Trials { get; set; }
}
并且查看
@model Project.Classes.Team
<td>
@for (int i = 0; i < Model.Trials.Count; i++ )
{
@Html.DisplayFor(x => Model.Trials.ElementAt(i).Name)
@Html.HiddenFor(x => Model.Trials.ElementAt(i).Name)
@Html.HiddenFor(x => Model.Trials.ElementAt(i).TrialID)
@Html.CheckBoxFor(x => Model.Trials.ElementAt(i).isChk)
<br />
}
</td>
当显示视图时,它显示模型(团队)中的试验对象(3试验)并显示在表单上,但是当表单发布然后在控制器中我没有得到试验的任何值它显示0试验...我通过在类中将ICollection更改为IList来完成它但是......团队类是由EF自动生成的,当项目重新运行时它忘记了更改,所以我想用ICollection plz做这个......
答案 0 :(得分:1)
在您View/Shared/EditorTemplates
文件夹中,使用以下代码添加名为Trials.cshtml
的新视图(创建为部分视图)
@model YourAssembly.Trial
@Html.HiddenFor(m => m.ID)
@Html.HiddenFor(m => m.Name)
@Html.DisplayFor(m => m.Name)
@Html.CheckBoxFor(m => m.isChk)
然后在您的视图中,使用@Html.EditorFor(m => m.Trials)
@model Project.Classes.Team
....
@Html.EditorFor(m => m.Trials)
EditorFor
将使用索引器正确命名集合项以进行回发,例如它将生成
<input type="hidden" name="Trials[0].ID" ...>
<input type="hidden" name="Trials[1].ID" ...>
注意:您是否真的想在一个表格单元格中显示整个集合,或者您的意思是每行Trial
一个,并且显示名称和复选框位于不同的td
元素中? f这样您就可以在tr
td
和EditorTemplate
元素