私が開発中のテスト用 ASP.NET MVC アプリケーションで Automapper に関する質問がありましたが、助けていただければ幸いです。
私は周りを見回しましたが、ネストされたViewModelで達成しようとしているものとまったく同じものを見つけることができませんでした.
基本的に、私はこれらの 2 つのドメイン モデルを持っています…</p>
namespace Test.Domain.Entities
{
public class Contact
{
[HiddenInput(DisplayValue = false)]
[Key]
public int ID { get; set; }
public Name Name { get; set; }
public string Contact_Landline { get; set; }
public string Contact_Mobile { get; set; }
[DataType(DataType.EmailAddress)]
public string Contact_Email { get; set; }
}
}
と..
namespace Test.Domain.Entities
{
public class Name : DisplayableModel
{
[HiddenInput(DisplayValue = false)]
[Key]
public int ID { get; set; }
public string Name_Forename { get; set; }
public string Name_Surname { get; set; }
public string GetFullName()
{
return Name_Forename + ' ' + Name_Surname;
}
}
}
そして、私はこれらの 2 つの ViewModel を持っています…</p>
namespace Test.WebUI.Models
{
public class ContactViewModel :
{
[HiddenInput(DisplayValue = false)]
[Key]
public int ID { get; set; }
public NameViewModel Name { get; set; }
public string Contact_Landline { get; set; }
public string Contact_Mobile { get; set; }
[DataType(DataType.EmailAddress)]
public string Contact_Email { get; set; }
}
}
そして…</p>
namespace Test.WebUI.Models
{
public class NameViewModel
{
[HiddenInput(DisplayValue = false)]
[Key]
public int ID { get; set; }
public string Name_Forename { get; set; }
public string Name_Surname { get; set; }
}
}
Contact ドメイン オブジェクトを設定する Name プロパティが設定された Name プロパティを使用して、ContactViewModel をビューに返したいと考えています。
コントローラーにこのコードがあります…</p>
Mapper.CreateMap<Name, NameViewModel>();
Mapper.CreateMap<Contact, ContactViewModel>();
var contact = Mapper.Map<Contact, ContactViewModel>(repository.Contact.Where(c => c.ID == id).Single());
return View(contact);
ここで問題が発生します。私の Name プロパティには値が入力されません。
この方法でアプリケーションを設計することを選択した理由は、この単純な例のように、コードを繰り返さずに NameViewModel オブジェクトを一貫してレンダリングできるように、ビューがカスタム モデル テンプレートで構成されているためです…</p>
@model Test.WebUI.Models.NameViewModel
First
@Model.Name_Forename
Last
@Model.Name_Surname
ContactViewModel の NameViewModel オブジェクトに AutoMapper を設定する方法を説明してくれる人がいれば、本当に感謝しています。
ありがとう。ジム