Я не отправляю списки в свой просмотр через ViewBag, вместо этого я использую свою модель представления для этого.Например, я сделал что-то вроде этого:
У меня есть такой EditorTemplate:
@model IceCream.ViewModels.Toppings.ToppingsViewModel
<div>
@Html.HiddenFor(x => x.Id)
@Html.TextBoxFor(x =x> x.Name, new { @readonly="readonly"})
@Html.CheckBoxFor(x => x.IsChecked)
</div>
, который я положил в свою папку Views \ IceCream \ EditorTemplates.Я использую это для отображения некоторого html, чтобы позволить пользователю «проверить» любой конкретный топпинг.
Тогда в моем представлении у меня есть что-то вроде этого:
@HtmlEditorFor(model => model.Toppings)
, и это будет использовать тот результат, что мой EditorTemplate будет использоваться для каждого из начинок в свойстве Toppings моей модели представления.
А потом у меня есть модель представления, которая, помимо прочего, включает коллекцию Toppings:
public IEnumerable<ToppingsViewModel> Toppings { get; set; }
В моем контроллере, среди прочего, я получаю начинки (однакоЯ делаю это в моем случае) и устанавливаю свойство моей viewmodel для этой коллекции начинок.В случае редактирования, где начинки могли быть выбраны ранее, я установил элемент IsChecked в TopingsViewModel, и он установит флажки для соответствующих флажков.
Выполнение этого способа обеспечило правильную привязку модели, такчто когда пользователь проверял несколько начинок, базовые элементы в коллекции отражали эти выборы.Хорошо сработало для меня, надеюсь, это полезно для вас.