2011-08-11 9 views
0

これが可能かどうかわかりませんが、私の状況はここにあります。自動モデルを使用してモデルの一部ではないビューモデルにプロパティを追加するにはどうすればよいですか?

は、私はこのようなモデルがあるとしましょう:

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; } 
} 

私は、フォームに戻って投稿する私のProductModelを使用していますが、私は気にしませんカスタム表示プロパティが必要です。このマッピングは、automapperが未知のプロパティを削除するため、うまく動作します。

私がしたいのは、私のカスタムプロパティを一方向だけにマッピングすることです。すなわち

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

私は未知のプロパティをダンプすると、何もワイヤーの上に来ないautomapper「ToModel」を、呼び出したときに何が起こって終わることです。

このようにします。

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

これは正しいです。ジミーはToModelの拡張子を二重にチェックしなければなりませんでした。問題はどこにあるのでしょうか。無視してください。 – trevorc

関連する問題