基礎所以我有這樣兩類:幫助理解AutoMapper
public class PhysicalTest
{
public int ID { get; set; }
public DateTime CreationDate { get; set; }
public int Weight { get; set; }
public int Height { get; set; }
public int Systolic { get; set; }
public int Diastolic { get; set; }
public int Pulse { get; set; }
}
public class PhysicalTestFormViewModel
{
public int ID { get; set; }
public DateTime CreationDate { get; set; }
[Required]
public int Weight { get; set; }
[Required]
public int Height { get; set; }
public int Systolic { get; set; }
public int Diastolic { get; set; }
public int Pulse { get; set; }
}
這是我AutoMapper配置
Mapper.CreateMap<PhysicalTestFormViewModel, PhysicalTest>();
當我這樣做只是正常
[HttpPost]
public ActionResult Create(int ehrId, PhysicalTestFormViewModel physicaltestvm)
{
EHR ehr = ehrRepository.Find(ehrId);
if (ehr.UserName != User.Identity.Name)
return View("Invalid Owner");
if (ModelState.IsValid)
{
PhysicalTest physicalTest= new PhysicalTest();
Mapper.Map(physicaltestvm, physicalTest);
physicalTest.PerformedBy = "Yo";
physicalTest.CreationDate = DateTime.Now;
ehr.PhysicalTests.Add(physicalTest);
ehrRepository.Save();
return RedirectToAction("Index");
}
else
{
return View(physicaltestvm);
}
}
但是當我這樣做時,我得到一個錯誤
試圖映射Summumnet.PhysicalTest 到 Summumnet.ViewModels.PhysicalTestFormViewModel。 缺少類型映射配置或 不受支持的映射。類型爲 的例外引發了'AutoMapper.AutoMapperMappingException' 。
public ActionResult Edit(int ehrId, int id)
{
EHR ehr = ehrRepository.Find(ehrId);
if (ehr.UserName != User.Identity.Name)
return View("Invalid Owner");
var physicalTest = ehr.PhysicalTests.Where(test => test.ID == id).Single();
PhysicalTestFormViewModel physicaltestvm = new PhysicalTestFormViewModel();
Mapper.Map(physicalTest, physicaltestvm);
return View(physicaltestvm);
}
在錯誤被拋出,我只是想構造一個視圖模型顯示的編輯形式的場景....什麼是這樣做的標準方式嗎?
真棒動態映射。感謝這一點 – ignaciofuentes