如何使用automapper向我的视图模型中添加不属于我的模型的属性?

时间:2011-08-11 23:44:35

标签: asp.net-mvc-3 automapper

我不确定这是否可行,但这是我的情况。

说我有这样的模型:

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
}

My View模型如下所示:

public class ProductModel
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string CustomViewProperty { get; set; }
}

我正在使用我的ProductModel回发到表单,我不关心或不需要自定义视图属性。这种映射可以正常工作,因为automapper会删除未知属性。

我想要做的是只在一个方向上映射我的自定义属性。即。

Mapper.CreateMap<Product, ProductModel>()
      .ForMember(dest => dest.CustomViewProperty //???This is where I am stuck

最终发生的事情是当我调用“ToModel”时,automapper会转储我未知的属性,并且没有任何内容通过网络传输。

喜欢这个。

var product = _productService.GetProduct();
var model = product.ToModel;
model.CustomViewProperty = "Hello World"; //This doesn't go over the wire
return View(model);

这可能吗?感谢。

1 个答案:

答案 0 :(得分:1)

您应该忽略未映射的属性:

Mapper.CreateMap<Product, ProductModel>()
  .ForMember(dest => dest.CustomViewProperty, opt=>opt.Ignore());

或映射它们:

Mapper.CreateMap<Product, ProductModel>()
  .ForMember(dest => dest.CustomViewProperty, opt=>opt.MapFrom(product=>"Hello world"));