Это простое приложение MVC, которое читает и пишет в файл Excel.Функциональность может быть упрощена в этих трех шагах.
- Прочитать список пациентов, забронированных на прием, и показать их пользователю.
- Разрешить пользователю проверять, кто пришел.
- Обновлять Excel с обновленным вводом.
Приложение хорошо читает с листа Excel и показывает все записи в представлении, как показано ниже.Однако при отправке параметр в действии post (которым должна быть модель, переданная из представления) получает 14 строк, но показывает нулевые значения для всех свойств в модели.Надеюсь, что скриншоты и код ниже помогут понять эту проблему.Спасибо за любую помощь / обратную связь
Excel выглядит следующим образом MVC Вид показывает, как показано ниже
Модель
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" />
}