2011-08-11 7 views
2

私は顧客クラスを持っています&管理者リストビューのCSV形式で顧客の電子メールフィールドを表示したいと思います。編集ビューが表示されたら、改行文字フィードで区切られたテキストボックス内のビューの電子メールを表示したいと思います。AutoMapperで同じタイプの別のマッピング戦略を呼び出すにはどうすればよいですか?

各ビューに2つの異なるクラスを使用したくない場合は、最初にIEnumerable<T>を使用してリストを表示します。私のクラスはかなり大きく、私は2つの別々のビュークラスを管理したくありません。

理想的な目標は、ブートストラップステージでCreateMapを使用して作成されたものに限定されるのではなく、異なるマッピングシナリオごとに2つの異なるAutoMapperマッピング1を持つことです。これをどのように達成するのですか?効果的に私はコード内のどこに応じてマッピング戦略を切り替えたいのですか?

答えて

1

理想的には、2つの異なるビューモデルを使用し、ソースを目的の場所にマッピングします。ただし、このルートを使用したくない場合は、2つの読み取り専用プロパティを持つビューモデルを作成することをお勧めします。

public class SomeClassViewModel 
{ 
    public string FirstName { get; set;} 

    public string LastName { get; set; } 

    public string Emails { get; set; } 

    public string EmailsCSV 
    { 
     get 
     { 
      var csv = Emails; 
      //Do CSV transform here 
      return csv; 
     } 
    } 

    public string EmailsCRLF 
    { 
     get 
     { 
      var crlf = Emails; 
      //Do crlf transform here 
      return crlf; 
     } 
    } 

} 

また、ビューごとに1つのモデルのルールを適用するのが理想的です。つまり、モデルごとにまったく新しいビューを作成する必要があるわけではありません。常に継承があります。

MyViewModelA : MyViewModelBase 
MyViewModelB : MyViewModelBase 
関連する問題