Карта ViewModel / частичные с AutoMapper

2

Я создал презентационную модель, и я хочу ее сопоставить (с AutoMapper) в ViewModel. ViewModel является составным/потому что я использую partials, и я хочу повторно использовать, например, KeyboardsViewModel также в других представлениях/частицах.

Как я могу сопоставить (настроить сопоставление) эту модель представления в ViewModel? Это правильный подход?

Спасибо!

public class MainPresentationModel : BasePresentationModel
{
  // Should map into the MainViewModel.Keyboards.Keyboards
  public int DefaultKeyboard { get; set; }
  // Should map into the MainViewModel.Keyboards.DefaultKeyboard
  public IList<Keyboard> Keyboards { get; set; }
  // Should map into the MainViewModel.Something
  public string Something { get; set; }
}

public class MainViewModel : BaseViewModel
{
  public KeyboardsViewModel Keyboards { get; set; }
  public string Something { get; set; }
}

public class KeyboardsViewModel
{
  public int DefaultKeyboard { get; set; }
  public IList<Keyboard> Keyboards { get; set; }
}

Отредактировано: После опроса я думаю, что это один из вариантов:

        Mapper.CreateMap<MainPresentationModel, MainViewModel>()
            .ForMember(d => d.Keyboards, opt => opt.MapFrom(src => src));
        Mapper.CreateMap<MainPresentationModel, KeyboardsViewModel>();

Кажется, что он работает, но я не уверен, насколько это оптимально/правильно...

Теги:
asp.net-mvc
automapper

1 ответ

0
Лучший ответ

Этот способ определенно работает. Вы также можете использовать интерфейсы для этих составных пользовательских интерфейсов. Например, частичное может принимать IKeyboardsViewModel, а затем вам не придется беспокоиться о сложных иерархиях наследования. Затем вы можете просто дать каждому частицу срез основной модели.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню