【发布时间】:2014-04-07 07:24:01
【问题描述】:
我有 2 个模型,它们代表数据库中的 2 个不同的表。我想在一个视图中更改这两个模型。我知道我可以将 2 个模型合二为一并将其传递给视图,但我的视图应该接受 IList<>。问题是我不确定如何在视图中使用组合模型。
我的组合模型如下所示:
public class FORM2_COMMON
{
public IEnumerable<FORM_2_SEC_1> FORM2_SEC1 { get; set; }
public IEnumerable<FORM_2_SEC_2> FORM2_SEC2 { get; set; }
}
在我的控制器中,我有:
public ActionResult EditReport(ReportParam param)
{
FORM2_COMMON common = new FORM2_COMMON();
common.FORM2_SEC1 = db.FORM_2_SEC_1.Where(e => e.YEAR == param.Year && e.MONTH == param.SelectedMonth).OrderBy(e => e.LINE_CODE).ToList();
common.FORM2_SEC2 = db.FORM_2_SEC_2.Where(e => e.YEAR == param.Year && e.MONTH == param.SelectedMonth).OrderBy(e => e.LINE_CODE).ToList();
return PartialView(common);
}
然后表格被汇总:
[HttpPost]
public ActionResult EditReportSubmit(FORM2_COMMON report)
{
if (ModelState.IsValid)
{
foreach (FORM_2_SEC_1 sec1 in report.FORM2_SEC1)
{
db.Entry(sec1).State = EntityState.Modified;
}
foreach (FORM_2_SEC_2 sec2 in report.FORM2_SEC2)
{
db.Entry(sec2).State = EntityState.Modified;
}
db.SaveChanges();
return RedirectToAction("ReportForm2", "OPSReports");
}
return View(report);
}
在视图中:
@model Proj.Models.FORM2_COMMON
@for (var i = 0; i < Model.Count; i++) //confused here
{
<tr> </tr>
}
现在看来,我不知道如何分别遍历 Model.FORM2_SEC1 和 Model.FORM2_SEC2。
当我将一个模型传递给视图时,一切都很容易,我通常这样编写代码:
@model IList<FORM_2_SEC_1>
@for (var i = 0; i < Model.Count; i++)
{
<tr>
<td> @Html.DisplayFor(x=>x[i].TITLE)</td>
......
</tr>
}
我还有模型的编辑器模板 (FORM_2_SEC_1.cshtml):
@model FORM_2_SEC_1
<tr>
<td> @Html.DisplayFor(x => x.TITLE)</td>
.......
</tr>
那么我如何为我的组合模型应用相同的逻辑?
感谢您的帮助
【问题讨论】:
标签: c# asp.net-mvc ienumerable ilist