Я пытаюсь передать модель из View обратно в контроллер.Я передаю NaborViewModel
для просмотра.Это список объектов, и каждый объект имеет 4 флажка (некоторые из них проверены случайным образом).
Модель:
public class NaborViewModel
{
public List<WowClass> WowClasses { get; set; }
}
Действия:
[HttpGet]
public ActionResult Nabor()
{
NaborViewModel viewModel = new NaborViewModel();
DatabaseDataContext context = new DatabaseDataContext();
viewModel.WowClasses = context.WowClasses.ToList();
return View(viewModel);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Nabor(NaborViewModel model)
{
//DB actions
return RedirectToAction(Consts.ActionNabor);
}
В поле зренияУ меня есть 2 формы, каждая с разным подходом.Первый - тот, который я создал с мыслью, что он может сработать.Вторая форма - подход, который я нашел онлайн.Первый отображает переданные данные правильно (заполненные флажки).Второй даже показывает все чекбоксы без проверки.Когда формы отправлены, они обе возвращают ноль обратно в действие контроллера.
Просмотр:
@using (Html.BeginForm(Consts.ActionNabor, Consts.ControllerAdmin, FormMethod.Post))
{
@Html.AntiForgeryToken()
<table class="admin-table">
<thead>
<tr>
<th>Class</th>
<th>Status</th>
<th colspan="3">Požadované talenty</th>
</tr>
</thead>
<tbody>
@foreach (var cls in Model.WowClasses)
{
<tr>
@Html.HiddenFor(x => cls.Id)
<td>@cls.ClassName</td>
<td>@Html.CheckBoxFor(x => cls.Open)</td>
<td style="text-align: left">@Html.CheckBoxFor(x => cls.NeedTalents1) <span>@cls.Talents1</span></td>
<td style="text-align: left">@Html.CheckBoxFor(x => cls.NeedTalents2) <span>@cls.Talents2</span></td>
<td style="text-align: left">@Html.CheckBoxFor(x => cls.NeedTalents3) <span>@cls.Talents3</span></td>
</tr>
}
</tbody>
</table>
<input type="submit" value="@Consts.Submit" />
}
<div class="horizontal-line-both"></div>
@using (Html.BeginForm(Consts.ActionNabor, Consts.ControllerAdmin, FormMethod.Post))
{
@Html.AntiForgeryToken()
<table class="admin-table">
<thead>
<tr>
<th>Class</th>
<th>Status</th>
<th colspan="3">Požadované talenty</th>
</tr>
</thead>
<tbody>
@for (int i = 0; i < Model.WowClasses.Count; i++)
{
<tr>
<td>
<input type="text" value="@Model.WowClasses[i].ClassName" name="Expense[@i].Id">
</td>
<td>
<input type="checkbox" value="@Model.WowClasses[i].Open" name="Expense[@i].Id">
</td>
<td>
<input type="checkbox" value="@Model.WowClasses[i].NeedTalents1" name="Expense[@i].Id">
</td>
<td>
<input type="checkbox" value="@Model.WowClasses[i].NeedTalents2" name="Expense[@i].Id">
</td>
<td>
<input type="checkbox" value="@Model.WowClasses[i].NeedTalents3" name="Expense[@i].Id">
</td>
<td>
<input type="hidden" value="@i" name="Expense[@i].Id">
</td>
</tr>
}
</tbody>
</table>
<input type="submit" value="@Consts.Submit" />
}