3
public ViewResult Details(string strap)
{
    var parcel = _service.GetProperty(strap);
    var owners = _service.GetOwners(parcel);
    var other_characteristics = _service.GetOtherCharacteristics(parcel);
    var viewModel = new PropertyViewModel();

    Mapper.Map(parcel, viewModel);
    Mapper.Map(owners, viewModel.Owners);
    Mapper.Map(other_characteristics.DELINEATED_DISTRICT, viewModel.DELINEATED_DISTRICT);


    return View(viewModel);
}

書く必要があるのはこれだけになるようにコードをセットアップできるはずだと思います。AutoMapper が残りを処理します。または、これよりもさらに少なく書くこともできます。

    Mapper.Map(parcel, viewModel);
    Mapper.Map(owners, viewModel);
    Mapper.Map(other_characteristics.DELINEATED_DISTRICT, viewModel);

これが私のオーバーライドされた Configure() メソッドです。この質問を最初に書いたので、DELINEATED_DISTRICT のマッピングをまだ追加していません。

   protected override void Configure()
    {
     //TODO: Add Mappings from Models to Data Objects 


        CreateMap<Property, PropertyViewModel>();
        CreateMap<IEnumerable<Owner>, PropertyViewModel>();
        //Names are the same in domain and viewModel


    }

ビューモデル

      public class PropertyViewModel
        {

            public PropertyViewModel()
            {
                Owners = new List<Owner>();
                Characteristics = new List<Characteristics>();

            }


            public string STRAP { get; set; }
            public string PROPERTY_ID { get { return String.Format("{0}-{1}-{2}", STRAP.Substring(0, 4), STRAP.Substring(4, 2), STRAP.Substring(6, 4)); }  }
            public string SITUS { get; set; }
            public string MAILING_ADDRESS { get; set; }
            public string PROPERTY_USE { get; set; }
            public string SUBDIVISION { get; set; }
            public string DSCR { get; set; }
            public string LAND_AREA { get; set; }
            public string INCORPORATION { get; set; }
            public string SEC_TWP_RGE { get; set; }
            public string CENSUS { get; set; }
            public string DELINEATED_DISTRICT { get; set; }

            public IList<Owner> Owners { get; set; }
            public IList<Characteristic> Characteristics {get;set;}

        }

モデル

public class Property
{
    [Key]        
    public string STRAP { get; set; }
    public string PROPERTY_ID {get;set;}
    public string SITUS { get; set; }
    public string MAILING_ADDRESS { get; set; }
    public string PROPERTY_USE { get; set; }
    public string SUBDIVISION { get; set; }
    public string DSCR { get; set; }
    public string LAND_AREA { get; set; }
    public string INCORPORATION { get; set; }
    public string SEC_TWP_RGE { get; set; }
    public string CENSUS { get; set; }
}

public class Owner
{
    [Key]
    public string OWNER_ID {get;set;}
    public string STRAP {get;set;}
    public string NAME {get;set;}

}
4

1 に答える 1

0

Mapper.Map(parcel, viewModel);他の方法でマップするために使用する必要は ありません。ごめん。

于 2012-05-29T22:20:27.287 に答える