2011-08-11 30 views
2

我有一個客戶類&我希望以CSV格式顯示客戶電子郵件字段以顯示管理列表視圖。當編輯視圖顯示時,我希望視圖顯示文本框中的電子郵件與新行字符Feed分開。如何在AutoMapper中爲同一類型調用不同的映射策略?

我不希望每個視圖有兩個不同的類只是使用相同的,第一個使用IEnumerable<T>來顯示列表。我的班級非常大,我不希望有2個獨立的視圖類來管理。

理想的目標是爲每個不同的映射場景創建2個不同的AutoMapper映射1,而不僅僅限於在引導階段使用CreateMap創建的映射。我如何實現這一目標?實際上,我想根據代碼中的位置來切換映射策略。

回答

1

理想情況下,您可以使用兩種不同的「查看模型」並將源映射到所需的目標。然而,如果你不想走這條路線,一個選擇就是創建一個具有兩個只讀屬性的視圖模型。

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

} 

再一次,理想情況下,您應該堅持每個視圖的一個模型的規則。這並不意味着你需要爲每個模型寫一個全新的視圖,總是有繼承。

MyViewModelA : MyViewModelBase 
MyViewModelB : MyViewModelBase 
相關問題