У меня есть представление со таблицей, в которой отображаются мои элементы модели. Я извлек соответствующие части моего зрения:Значения флажка ASP.Net MVC от представления к методу пользовательского контроллера
@model System.Collections.Generic.IEnumerable<Provision>
@using (Html.BeginForm("SaveAndSend", "Provision", FormMethod.Post))
{
if (Model != null && Model.Any())
{
<table class="table table-striped table-hover table-bordered table-condensed">
<tr>
...
// other column headers
...
<th>
@Html.DisplayNameFor(model => model.IncludeProvision)
</th>
...
// other column headers
...
</tr>
@foreach (var item in Model)
{
<tr>
...
// other columns
...
<td>
@Html.CheckBoxFor(modelItem => item.IncludeProvision)
</td>
...
// other columns
...
</tr>
}
</table>
<button id="save" class="btn btn-success" type="submit">Save + Send</button>
}
...
}
Это работает отлично, а значения Флажка корректно отображается в окне просмотра в зависимости от булева значения IncludeProvision
поля для данного элемента модели.
Согласно ответу Эндрю Орлова, я изменил представление и контроллер и метод SaveAndSend()
контроллера теперь:
[HttpPost]
public ActionResult SaveAndSend(List<Provision> provisions)
{
if (ModelState.IsValid)
{
// perform all the save and send functions
_provisionHelper.SaveAndSend(provisions);
}
return RedirectToAction("Index");
}
Однако, в этот момент проходила в модели объекта равна нулю.
В том числе предоставления модели объекта для полноты:
namespace
{
public partial class Provision
{
...
// other fields
...
public bool IncludeProvision { get; set; }
}
}
Моего вопрос, что это лучший способ, чтобы захватить проверенное/непроверенное значение из каждого флажка и обновить поле сеанса IncludeProvision
для каждого элемента модели, когда Нажимается кнопка «SaveAndSend»?
Вы просто должны иметь 'HttpPost' метод а не переадресацию JavaScript, затем отправьте свою модель, и затем вы можете поместить свои данные в сеанс и выполнить перенаправление. – mattytommo
Старайтесь избегать проверки модели на нуль при просмотре. Это задача контроллера в вашем случае. –
@AndrewOrlov hmm Я только что повторил предложенный вами рефакторинг кода ReSharper, полагая, что он не полностью оптимизирован для соответствия лучшим методам MVC. – illya