使用AutoMapper处理部分更新(发布不足)

时间:2019-05-02 16:30:11

标签: c# asp.net-mvc asp.net-core automapper

我正在尝试找到一种处理部分更新的方法;一个ViewModel有5个字段,但是在Request中仅发送一个字段(即,仅发送已修改的字段而不是构成整个视图模型),因为没有为其他字段显式发送空值,所以我认为它们应设置为null。由于AutoMapper不支持绑定列表,因此很难找到一种优雅的解决方案...

public virtual IActionResult Edit(int id, ViewModel1 viewModel)
{
  var model = GetModel(id);
  mapper.Map(viewModel, model);
  // any field that was not posted, but exists in the ViewModel1 is now null in the model
  ...
}

我能想到的唯一方法是使用Request.Form.Keys和Reflection来构建只包含已发布属性的ExpandoObject,然后将CreateMissingTypeMaps和ValidateInlineMaps设置为允许AutoMapper映射动态类型。感觉这是一种肮脏的解决方法,可以弥补AutoMapper所缺少的功能...是否有标准的处理方法?

0 个答案:

没有答案