2016-11-03 41 views
0

我目前做手工我的DTO =>視圖模型轉換在我的MVC項目。所以,代碼如下:轉型使用AutoMapper

var model = new LandingModel { 
       FamilyName = token.FamilyName, 
       LoggedInUser = token.DisplayName, 
       TimeZoneName = token.TimeZoneName, 
       CurrentDateTime = Common.SessionManager.GetSessionDate().ToString(SharedLib.Constants.FMT_DATE_AND_TIME_LONG) 
      }; 

一個LandingModel看起來是這樣的:

public class LandingModel 
{ 
    public string FamilyName { get; set; } 
    public string LoggedInUser { get; set; } 
    public string TimeZoneName { get; set; } 
    public string CurrentDateTime { get; set; } 
} 

如何處理然後CurrentDateTime?它是模型中的字符串,通過從會話變量獲取用戶時區日期時間並應用字符串格式來處理。

我怎樣才能做到這一點使用Mapper.Map<SessionToken>(model));

注意,.GetSessionDate()只是採用UTC日期,並增加了一個從用戶的時區偏移,根據他們給當前的日期。

回答

4

如下所示,您可以在您的MapperConfiguration處理這種情況:

var config = new MapperConfiguration(
    cfg => 
    { 
     cfg.CreateMap<SessionToken, LandingModel>() 
     .AfterMap((src, dest) => dest.CurrentDateTime = Common.SessionManager.GetSessionDate().ToString(SharedLib.Constants.FMT_DATE_AND_TIME_LONG)); 
    }); 

參考:

AutoMapper - Before and after map actions