asp.net в MVC строго типизированные модели представления с помощью множественного выбора
Я хотел бы знать, как я могу привязать мои значения формы к моему строго типизированному представлению из Мультиселектного окна.
Очевидно, что при отправке формы поле множественного выбора отправит строку delittemered выбранных мною значений...как лучше всего преобразовать эту строку значений обратно в список объектов для присоединения к моей модели, подлежащей обновлению?
public class MyViewModel {
public List<Genre> GenreList {get; set;}
public List<string> Genres { get; set; }
}
При обновлении моей модели внутри контроллера я использую UpdateModel, как показано ниже:
Account accountToUpdate = userSession.GetCurrentUser();
UpdateModel(accountToUpdate);
Однако мне нужно как-то добраться значения из строки возвращаются в объекты.
Я полагаю, что это может иметь какое-то отношение к связывателям моделей, но я не могу найти хороших ясных примеров того, как это сделать.Спасибо!! Павел
2 ответа:
Вы правы, что модель связующего - это путь. Попробовать это...
using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Web.Mvc; [ModelBinder(typeof(MyViewModelBinder))] public class MyViewModel { .... } public class MyViewModelBinder : DefaultModelBinder { protected override void SetProperty(ControllerContext context, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor, object value) { if (propertyDescriptor.Name == "Genres") { var arrVals = ((string[])value)[0].Split(','); base.SetProperty(context, bindingContext, propertyDescriptor, new List<string>(arrVals)); } else base.SetProperty(context, bindingContext, propertyDescriptor, value); } }
Проверьте сообщение Фила Хакса в блоге на эту тему. Я использовал это в качестве основы для мульти-выбора строго типизированного представления в недавнем проекте.