у меня есть это в мой контроллер:ViewModel не проводки назад
public ActionResult Index()
{
var viewModels = _dataSyncService.Get().Select(provider => new IndexViewModel
{
Selected = false, Provider = provider
}).ToList();
return View(viewModels);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index(IEnumerable<IndexViewModel> viewModels)
{
//Breakpoint on this to check viewModels
}
ViewModel:
public class IndexViewModel
{
public bool Selected { get; set; }
public IDataSyncProvider Provider { get; set; }
}
И мой Index.cshtml:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<button type="submit" class="btn blue">Trigger Selected</button>
@foreach (var sync in Model)
{
<tr>
<td>
@Html.CheckBoxFor(s => sync.Selected)
</td>
<td>@sync.Provider.FriendlyName</td>
</tr>
}
}
Но мои модели вывешены назад, viewModels
всегда возвращается как null. Я много читал о необходимости присваивать идентификатор флажку и т. Д., Но я думал, что это то, что для Html.CheckBoxFor
.
Я уверен, что в какой-то момент я буду себя обманывать, но я мог бы сделать некоторые указания, пожалуйста.
А, примеры, которые я видел, это так, но я думал, что это их предпочтение. Я отдам его. – webnoob
Это не предпочтение. Если вы хотите привязать к коллекции, входные имена должны следовать схеме, как описано в связанной статье. И помощники генерируют эти имена только в том случае, если вы используете в них индекс индекса массива. Таким образом, вы все равно можете использовать 'foreach', если вы поддерживаете отдельный индекс и используете индексатор в хелперах, но в этом случае' foreach' не покупает вам ничего, поэтому вам проще идти с простым циклом 'for'. – nemesv
Отлично, теперь он отсортировал обратную передачу (например, Selected = true, когда отмечено и отправлено назад), однако часть «Provider» моей модели ViewModel не отправляется обратно. Ты знаешь почему? Я попытался добавить '@ Html.HiddenFor (m => Model [i] .Provider)', но это, похоже, не помогло. p.s Я проверил ViewModel, когда он назначен для представления, и он отправляется Хорошо. – webnoob