Я пытаюсь связать массив объектов в модели представления из представления, чтобы отправить обратно в контроллер для публикации в БД. Я заполняю список выбора следующим образом в ViewModel в ContactForm:
public List<SelectListItem> PhoneTypes { get; } = new List<SelectListItem> {
new SelectListItem { Value = "Not Specified", Text = "Not Specified"},
new SelectListItem { Value = "Cell", Text = "Cell"},
new SelectListItem { Value = "Home", Text = "Home"}
};
В моем контроллере я отправляю модель представления в представление следующим образом:
ContactInfoViewModel civm = new ContactInfoViewModel();
List<ContactForm> tpl = new List<ContactForm>();
for(int i = 0; i < 3; i++)
{
tpl.Add(new ContactForm());
}
civm.ContactForms = tpl;
На мой взгляд, я Цикл, чтобы связать объекты контактной формы из списка в форме. Это работает нормально, если я закомментирую строку выбора.
@for(int i = 0; i < Model.ContactInfoViewModel.ContactForms.Count; i++)
{
<label asp-for="ContactInfoViewModel.ContactForms[i].Name"></label> <input asp-for="ContactInfoViewModel.ContactForms[i].Name" />
<label asp-for="ContactInfoViewModel.ContactForms[i].Phone"></label> <input asp-for="ContactInfoViewModel.ContactForms[i].Phone" />
<label asp-for="ContactInfoViewModel.ContactForms[i].PhoneType"></label> <select asp-for="ContactInfoViewModel.ContactForms[i].PhoneType" asp-items="ContactInfoViewModel.ContactForms[i].PhoneTypes"></select>
<label asp-for="ContactInfoViewModel.ContactForms[i].Relationship"></label> <input asp-for="ContactInfoViewModel.ContactForms[i].Relationship" />
<br />
}
Вышеприведенная строка списка выдает эту ошибку:
Ошибка CS0120 Ссылка на объект требуется для незавершенного c поле, метод или свойство 'ContactInfoViewModel.ContactForms'
Есть идеи, как заставить этот список выбора работать? Я не понимаю, почему этот список выбора отличается от любых других элементов в контактной форме?
Заранее спасибо.