#model-binding #asp.net-mvc-viewmodel
#привязка модели #asp.net-mvc-viewmodel
Вопрос:
Что я пытаюсь
Я пытаюсь привязать свою ViewModel к моему представлению, которое содержит имя клиента и список контактов для связи с этим клиентом. После заполнения представления я также хочу, чтобы у пользователя была возможность добавлять, удалять и редактировать контакты в представлении.
Что у меня есть до сих пор
В настоящее время я могу привязываться к ViewModel с помощью EditorTemplate и редактировать данные без проблем. Проблема возникает, когда я хочу добавить или удалить строки в списке, если пользователь удаляет строку 5 из середины редактируемого списка, связанного с ViewModel, на сервер будут отправлены только строки 1-4.
Код
Вот как выглядит моя ViewModel:
public class CustomerViewModel{
[Required]
public int CustomerUniqueID { get; set; }
[Required]
public string Name { get; set; }
public IEnumerable<CustomerContacts> Contacts { get; set; }
public CustomerViewModel() { }
public CustomerViewModel(Customer customer)
{
ICustomerContactRepository contacts = new LockShop.Domain.Concrete.EFCustomerContactRepository();
this.Contacts = contacts.FindContacts(customer.UniqueID);
this.Name = customer.Name;
}
}
Я передаю свою ViewModel своему представлению следующим образом:
public ActionResult Edit(){
Customer customer = repository.Customers.FirstOrDefault(c => c.UniqueID == 23128);
return View(new CustomerViewModel(customer));
}
Когда приходит время отображать список, я просто использую помощник EditorFor:
@Html.EditorFor(model => model.Contacts)
Что мне нравится в этом подходе, так это то, что когда я нажимаю кнопку сохранения, все мои изменения автоматически отправляются в контроллер!
Мой вопрос
Каковы наилучшие способы добавления функциональности добавления и удаления строк в список, который генерируется IEnumerable из моей ViewModel?
Что я пробовал
Я прочитал сообщение в блоге Стивена Сандерсона, в котором говорится о редактировании списка переменной длины в ASP.NET MVC. Его сообщение, похоже, касается только привязки к модели и не распространяется на возможность привязки к списку в ViewModel. Когда я реализовал его решение, данные post из списка контактов, которые были отправлены обратно на контроллер, были равны нулю.
Пожалуйста, не стесняйтесь задавать любые вопросы для уточнения и спасибо за ваше время.