我不确定这是否可行,但这是我的情况。
说我有这样的模型:
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);
这可能吗?感谢。
答案 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"));