Đây là mã điều khiển của tôi, hoạt động 100% khi tôi cần nó. Tuy nhiên phương thức POST không sử dụng AutoMapper và điều đó không ổn. Làm thế nào tôi có thể sử dụng AutoMapper trong phương pháp hành động này?Sử dụng AutoMapper trong phương thức Chỉnh sửa hành động trong ứng dụng MVC3
Tôi đang sử dụng Entity Framework 4 với Mẫu Kho lưu trữ để truy cập dữ liệu.
public ActionResult Edit(int id)
{
Product product = _productRepository.FindProduct(id);
var model = Mapper.Map<Product, ProductModel>(product);
return View(model);
}
[HttpPost]
public ActionResult Edit(ProductModel model)
{
if (ModelState.IsValid)
{
Product product = _productRepository.FindProduct(model.ProductId);
product.Name = model.Name;
product.Description = model.Description;
product.UnitPrice = model.UnitPrice;
_productRepository.SaveChanges();
return RedirectToAction("Index");
}
return View(model);
}
Nếu tôi sử dụng AutoMapper, tham chiếu khung thực thể bị mất và dữ liệu không tồn tại trong cơ sở dữ liệu.
[HttpPost]
public ActionResult Edit(ProductModel model)
{
if (ModelState.IsValid)
{
Product product = _productRepository.FindProduct(model.ProductId);
product = Mapper.Map<ProductModel, Product>(model);
_productRepository.SaveChanges();
return RedirectToAction("Index");
}
return View(model);
}
Tôi đoán điều này gây ra hàm Mapper.Map trả về một đối tượng Product mới và vì lý do đó, không có tham chiếu đến biểu đồ khung thực thể đang được lưu giữ. Bạn đề nghị lựa chọn thay thế nào?
Nó không rõ ràng vấn đề bạn đang gặp phải là gì. Bạn nói rằng phương thức POST của bạn không sử dụng Automapper, nhưng tôi không thấy bất kỳ mã Automapper nào trong phương thức '[HttpPost]' của bạn. –
có thể bạn không đăng lại điều đúng? –
Không chắc chắn ông có nghĩa là tự động Robert, nghĩ rằng ông có nghĩa là "modelbinder" nhưng tôi không chắc chắn 100% –