У меня есть CreateViewModel
.Привяжите галочки к списку с частичным видом
public class CreateViewModel
{
public AttributesViewModel AttributesInfo { get; set; }
}
The AttributesViewModel
посылается частичный вид.
public class AttributesViewModel
{
public AttributesViewModel()
{
ChosenAttributes = new List<int>();
}
public List<Attributes> Attributes { get; set; }
public List<int> ChosenAttributes { get; set; }
}
Список атрибутов выводится на частичном изображении. У каждого есть флажок.
foreach (var attribute in Model.Attributes)
{
<input type="checkbox" name="ChosenAttributes" value="@attribute.ID" /> @Attribute.Name
}
Когда я отправляю CreateViewModel
, AttributesInfo.ChosenAttributes
всегда пусто, даже если я проверил несколько коробок. Как правильно назначить каждый флажок, чтобы он привязывался к списку ChosenAttributes?
мое решение
Я принял предложение Стивена Муеке, чтобы сделать два способа связывания. Итак, я создал класс CheckboxInfo, который содержал Value, Text и IsChecked. Я создал для него EditorTemplate:
@model Project.CheckboxInfo
@Html.HiddenFor(model => model.Text)
@Html.HiddenFor(model => model.Value)
@Html.CheckBoxFor(model => model.IsChecked) @Model.Text
Один GIANT оговорку. Чтобы это нормально работало, мне пришлось создать EditorTemplate для класса AttributesViewModel. Без него, когда будет опубликован CreateViewModel, он не может привязать флажки к атрибутуИнформация.
Атрибуты AttributesInfo.ChosenAttributes не работают. Я попробую двухсторонний способ привязки. – ScubaSteve
Рад добавить код, если у вас возникли проблемы, но почему у вас есть 'CreateViewModel', который содержит только одно свойство (для' AttributesViewModel')? - или содержит другие свойства, которые вы просто не указали) –
Да, он содержит другие свойства, которые я опустил. Это просто сделало бы более громоздким понять мою проблему с несущественными свойствами. – ScubaSteve