2016-11-03 20 views
0

私のMVCプロジェクトでは、現在、手動で自分のDTO => ViewModel変換を行います。だから、コードは次のようになります。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) 
      }; 

A 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の日付を取得し、それらに応じて現在の日付を与えるために、ユーザーのタイムゾーンからのオフセット、追加されます。

の下に示されているようにあなたの MapperConfigurationでこのシナリオを扱うことができる

答えて

4

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

REFERENCE:

AutoMapper - Before and after map actions

関連する問題