我与3张桌子有多对多的关系。员工,历史和职称。历史记录表包含时间跨度以及与员工和职位的关系。
最后,我希望能够从一个共同的视图中编辑每个员工的时间跨度和标题。在employeeController.cs
我提交表单时获得了此代码。
[HttpPost, ActionName("Edit")]
[ValidateAntiForgeryToken]
public ActionResult Edit(employee empl) // Note: I have no bindings here, either. Should I?
if (ModelState.IsValid)
{
db.Entry(empl).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(empl);
}
但是对象empl
在其历史记录集合中没有任何内容。它只是说Count = 0
。如何同时包含我的历史记录(以及后来的标题表),以便我也可以更新它?
我的一些employee.cs
:
public partial class employee
{
public employee()
{
this.Histories = new HashSet<Histories>();
}
public virtual ICollection<Histories> Histories { get; set; }
}
供参考,这在员工的Edit.cshtml
中正确显示:
<table class="table">
<tr>
<th>Start date</th>
<th>End date</th>
<th>Title</th>
</tr>
@foreach (var item in Model.Histories.OrderByDescending(x => x.fromdate))
{
<tr>
<td>
@Html.EditorFor(modelItem => item.fromdate)
</td>
<td>
@Html.EditorFor(modelItem => item.todate)
</td>
<td>
@Html.EditorFor(modelItem => item.Title.Title)
</td>
</tr>
}
</table>
如果需要更多信息,请随时提出,并对任何错别字表示抱歉。我必须将所有课程名称翻译成英语,以便您更好地理解。
答案 0 :(得分:0)
使用这样的东西:
for (int i = 0; i < Model.Histories.OrderByDescending(x => x.fromdate).Count(); i++)
{
<tr>
<td>
@Html.HiddenFor(modelItem => Model.Histories[i].fromdate)
@Html.EditorFor(modelItem => Model.Histories[i].fromdate)
</td>
<td>
@Html.HiddenFor(modelItem => Model.Histories[i].todate)
@Html.EditorFor(modelItem => Model.Histories[i].todate)
</td>
<td style="text-align: center">
@Html.HiddenFor(modelItem => Model.Histories[i].Title.Title)
@Html.EditorFor(modelItem => Model.Histories[i].Title.Title)
</td>
</tr>
}