我创建了演示模型,我想将它(使用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>();
它似乎有效,但我不确定这是否是最佳/正确的方式...
答案 0 :(得分:0)
这种方式绝对有效。您还可以为这些复合UI使用接口。例如,partial可以接受IKeyboardsViewModel,然后您不必担心复杂的继承层次结构。然后,您可以将每个部分分配给主模型。