2011-08-11 14 views
0

我不確定這是否可能,但這是我的情況。如何使用automapper將屬性添加到我的視圖模型中,這些屬性不是我的模型的一部分?

說我有這樣一個模型:

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

我的視圖模式是這樣的:

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

我用我的產品型號後回到一種形式,我不在乎或需要自定義視圖屬性。該映射在自動映射器丟棄未知屬性時工作正常。

我想要做的是隻在一個方向上映射我的自定義屬性。即

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

什麼是ToModel財產做什麼呢? –

+0

這是一種將我的實體映射到我的模型的擴展方法。它應該是product.ToModel(); – trevorc

回答

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")); 
+0

我已經嘗試了這兩種方法,並且automapper會刪除我的自定義屬性。我相信'忽略'就是要做到這一點。 – trevorc

+0

這是正確的。 Jimmy強迫我仔細檢查我的ToModel擴展,這就是問題所在。忽略作品。 – trevorc

相關問題