I use an IBuilder interface and implement it using the ValueInjecter
public interface IBuilder<TEntity, TViewModel>
{
TEntity BuildEntity(TViewModel viewModel);
TViewModel BuildViewModel(TEntity entity);
TViewModel RebuildViewModel(TViewModel viewModel);
}
… (implementation) RebuildViewModel just calls BuildViewModel(BuilEntity(viewModel))
[HttpPost]
public ActionResult Update(ViewModel model)
{
if(!ModelState.IsValid)
{
return View(builder.RebuildViewModel(model);
}
service.SaveOrUpdate(builder.BuildEntity(model));
return RedirectToAction("Index");
}
btw I don’t write ViewModel I write Input cuz it’s much shorter, but that just not really important
hope it helps
Update:
I’m using this approach now in the ProDinner ASP.net MVC Demo App,
it’s called IMapper now, there’s also a pdf provided where this approach is explained in detail