我有一个基类和 3 个子类以及具有所有属性的单个视图模型。我想在我的控制器中创建操作以将此视图模型绑定到具体的子类型。
这是我的创建操作不起作用(我收到错误映射类型):
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Create(AdViewModel vm)
{
if (ModelState.IsValid)
{
var ad = Mapper.Map<Ad>(vm);
_context.Ads.Add(ad);
_context.SaveChanges();
return RedirectToAction("Index");
}
return View();
}
这是自动映射器配置:
Mapper.Initialize(config =>
{
config.CreateMap<AdViewModel, Ad>().ReverseMap();
config.CreateMap<AdViewModel, Realty>().ReverseMap();
config.CreateMap<AdViewModel, Auto>().ReverseMap();
config.CreateMap<AdViewModel, Service>().ReverseMap();
});
这是工作代码,但我怀疑使用它:
public IActionResult Create(AdViewModel vm)
{
if (ModelState.IsValid)
{
if (vm.RealtyType != null)
{
var ad = Mapper.Map<Realty>(vm);
_context.Add(ad);
}
else if (vm.AutoType != null)
{
var ad = Mapper.Map<Auto>(vm);
_context.Add(ad);
}
else
{
var ad = Mapper.Map<Service>(vm);
_context.Add(ad);
}
_context.SaveChanges();
return RedirectToAction("Index");
}
return View();
}