这是一个简单的MVC应用程序,可以读取和写入Excel文件。这三个步骤可以简化功能。
模型
public class Appointments
{
public string Facility { get; set; }
public string MRNumber { get; set; }
public string GroupTopic { get; set; }
public string LOC { get; set; }
public bool CheckedIn { get; set; }
}
查看模型
public class AppointmentsViewModel
{
public List<Appointments> appointments { get; set; }
}
索引HttpGet传递了一个显示14行的视图模型对象
public ActionResult Index()
{
AppointmentsViewModel vm = new AppointmentsViewModel();
//Some code is which populates vm with data from Excel
return View(vm);
}
索引HttpPost操作正在获取具有14个约会对象列表的虚拟机,但所有属性均显示为空
[HttpPost]
public ActionResult Index(AppointmentsViewModel vm)
{
//Breakpoint
//Some code to update Excel file
}
我在上面的“ Break Point”处放置一个断点,查看传递给vm的内容,它显示了所有14行,但具有空属性
在我看来,我确保我使用的是for循环而不是foreach,并且我对模型中的每个属性都使用@ Html.DisplayFor。另外,我的模型声明为
@model Scheduling_Demo.Models.AppointmentsViewModelCode,其视图位于以下
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
<table class="table" style="align-content:center">
@*<tr>
<th>
@Html.LabelFor(model => model.appointments.FirstOrDefault().Facility)
</th>
<th>
@Html.LabelFor(model => model.appointments.FirstOrDefault().MRNumber)
</th>
<th>
@Html.LabelFor(model => model.appointments.FirstOrDefault().GroupTopic)
</th>*@
@*<th>
@Html.LabelFor(model => model.appointments.FirstOrDefault().Date)
</th>*@
@*<th>
@Html.LabelFor(model => model.appointments.FirstOrDefault().LOC)
</th>
<th>
@Html.LabelFor(model => model.appointments.FirstOrDefault().CheckedIn)
</th>
</tr>*@
@for (int t = 0; t < Model.appointments.Count; t++)
{
<tr>
<td>
@Html.DisplayFor(model => Model.appointments[t].Facility)
</td>
<td>
@Html.DisplayFor(model => Model.appointments[t].MRNumber)
</td>
<td>
@Html.DisplayFor(model => Model.appointments[t].GroupTopic)
</td>
@*<td>
@Html.DisplayFor(model => Model.appointments[t].Date)
</td>*@
<td>
@Html.DisplayFor(model => Model.appointments[t].LOC)
</td>
<td>
@Html.CheckBoxFor(model => Model.appointments[t].CheckedIn)
</td>
</tr>
}
</table>
<input type="submit" name="Submit" value="Submit" class="btn btn-info btn-sm" />
}
答案 0 :(得分:0)
基于以上评论,由于成功传递的唯一值是@ Html.CheckboxFor的值,因此我搜索了为什么@ Html.DisplayFor没有将模型绑定到后期操作。下面链接的帖子回答了我的问题。感谢大家。希望这可以帮助其他人。
MVC4 Razor - @Html.DisplayFor not binding to model