Я работаю над небольшим проектом. Цель состоит в том, чтобы поддерживать присутствие нескольких пользователей в определенные конкретные даты. Эти даты сначала выбираются пользователем.Возвращаясь viewmodel из представления дает объект ampty в контроллере
поэтому использование модель. Это предоставит все возможные данные с помощью флажка в таблице, чтобы показать пользователю.
В самом представлении я каждый день прохожу в данной модели вида, и я позволяю виду генерировать тег и объект редактора (Html.EditorFor()). Все это окружено созданием формы (@ Html.BeginForm()). Предоставление представления не является проблемой.
Проблема в том, когда я пытаюсь вернуть модель представления. Объект viewmodel, который я получаю, представляет собой объект с нулевыми объектами сам по себе. Подобно тому, как он был создан конструктором по умолчанию.
Контроллер:
[HttpGet]
public ActionResult OpldagenLt()
{
var lt = _gebruikerRepository.GeefTraject(_gebruikerRepository.TrajectId);
List<DatumModel> data = new List<DatumModel>();
foreach (Opleidingdag opldag in lt.GeefOpleidingdagenKleinerDanOfGelijkAanVandaag())
data.Add(new DatumModel(opldag));
List<ToekomstModel> toekomst = new List<ToekomstModel>();
foreach (Opleidingdag opldag in lt.GeefOpleidingdagenGroterDanVandaag())
toekomst.Add(new ToekomstModel(opldag));
DataModel datamod = new DataModel();
datamod.Datums = data;
datamod.Toekomst = toekomst;
if (lt.ControleerAantalOpleidingdagen())
{
_gebruikerRepository.GekozenDagen = GekozenDagen(datamod) as List<Opleidingdag>;
return RedirectToAction("Index", "Aanwezigheid");
}
return View(datamod);
}
[HttpPost]
public ActionResult OpldagenLt(DataModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
_gebruikerRepository.GekozenDagen = GekozenDagen(model) as List<Opleidingdag>;
return RedirectToAction("Index", "Aanwezigheid");
}
public ICollection<Opleidingdag> GekozenDagen(DataModel datamod)
{
List<Opleidingdag> dagen = new List<Opleidingdag>();
foreach (DatumModel datum in datamod.Datums)
{
dagen.Add(datum.Dag);
}
return dagen;
}
Вид:
@using(@Html.BeginForm("OpldagenLt", "Leertraject", FormMethod.Post))
{
<div>
<table>
<tr>
<th colspan="2">reeds begonnen dagen</th>
</tr>
@foreach (var item in @Model.Datums)
{
<tr>
<td>@Html.DisplayFor(modelItem => item.Dag.Dag.Day)/@Html.DisplayFor(modelItem => item.Dag.Dag.Month)/@Html.DisplayFor(modelItem => item.Dag.Dag.Year)</td>
<td>@Html.EditorFor(modelItem => item.Checked)</td>
</tr>
}
</table>
</div>
<div id="toekomst">
<table>
<tr>
<th>Dagen in de toekomst</th>
</tr>
@foreach (var item in @Model.Toekomst)
{
<tr>
<td>@Html.DisplayFor(modelItem => item.Dag.Dag.Day)/@Html.DisplayFor(modelItem => item.Dag.Dag.Month)/@Html.DisplayFor(modelItem => item.Dag.Dag.Year)</td>
</tr>
}
</table>
</div>
<div>
<p><input type="submit" value="Volgende"/></p>
</div>
}
Модель:
using System;
using System.Collections.Generic;
using ProjectII.Models.domain;
namespace ProjectII.Viewmodels
{
public class DataModel
{
public DataModel()
{
Datums = new List<DatumModel>();
}
public ICollection<DatumModel> Datums { get; set; }
public ICollection<ToekomstModel> Toekomst{ get; set; }
}
public class DatumModel
{
public DatumModel()
{
Dag = new Opleidingdag(new DateTime().Date);
Checked = true;
}
public DatumModel(Opleidingdag opldag)
{
Dag = opldag;
Checked = true;
}
public Opleidingdag Dag { get; set; }
public bool Checked { get; set; }
}
public class ToekomstModel
{
public ToekomstModel()
{
Dag = new Opleidingdag(new DateTime().Date);
}
public ToekomstModel(Opleidingdag opldag)
{
Dag = opldag;
}
public Opleidingdag Dag { get; set; }
}
}
Заранее спасибо за помощь
У вас есть ваша '@ модель', заявленная в представлении? –
Вы имеете в виду это? @model ProjectII.Viewmodels.DataModel – pythox101
Вы получаете объект, содержащий нулевые объекты. Вы имеете в виду, что 'ProjectII.Viewmodels.DataModel' не является нулевым, но свойства' Datums' и 'Toekomst' равны нулю? Или элементы в «List» и 'List ' null? При отладке объекты «data» и «toekomst» правильно заполняются, когда вы назначаете их свойствам 'datamod'? –
Stephen