Обычно считается лучшей формой передавать DTO (объект передачи данных) между контроллером и представлением, а не самими объектами вашего домена.
Затем в действии «Редактировать» в контроллере вы извлекаете объект из своего репозитория с помощью идентификатора, предоставленного DTO, и обновляете свойства, в основном, как вы предлагали выше.
, например
[HttpPost]
[Transaction]
public ViewResult Edit(ItemDTO item)
{
// Validate here
var fromDB = _itemDomainService.GetById(item.Id);
fromDB.Name = item.Name;
fromDB.Description = item.Description
return Redirect("Item", "Details", item.Id);
}
Чтобы избежать написания большого количества кода «fromDB.X = item.X», вы должны взглянуть на AutoMapper , который сопоставит свойства для вас, если вы назовете свои свойства DTO в соответствии с некоторыми простыми соглашениями .