整数配列 (複数選択 MVC ListBoxFor 要素から入力) をドメイン オブジェクトの ICollection プロパティにマップするように AutoMapper を構成するにはどうすればよいですか? 基本的に、ドメイン オブジェクトの PatientTypes プロパティと ProviderTypes プロパティを、ユーザーがリスト ボックスで選択したものに設定し、オブジェクトをデータベースに保存したいと考えています。
ドメイン オブジェクト
public class Document
{
public int ID { get; set; }
public virtual ICollection<PatientType> PatientTypes { get; set; }
public virtual ICollection<ProviderType> ProviderTypes { get; set; }
}
モデルを見る
public class DocumentEditModel
{
public int ID { get; set; }
[DisplayName("Patient Type")]
public int[] SelectedPatientTypes { get; set; }
public SelectList PatientTypeList { get; set; }
[DisplayName("Provider Type")]
public int[] SelectedProviderTypes { get; set; }
public SelectList ProviderTypeList { get; set; }
}
コントローラ
public virtual ActionResult Edit(int pid)
{
var model = Mapper.Map<DocumentEditModel>(_documentRepository.Find(pid));
model.ProviderTypeList = new SelectList(_providerTypeRepository.All.OrderBy(x => x.Value), "ID", "Value");
model.PatientTypeList = new SelectList(_patientTypeRepository.All.OrderBy(x => x.Value), "ID", "Value");
return View(model);
}
[HttpPost]
public virtual ActionResult Edit(DocumentEditModel model)
{
if (ModelState.IsValid)
{
var document = Mapper.Map(model, _documentRepository.Find(model.ID));
document.DateModified = DateTime.Now;
_documentRepository.InsertOrUpdate(document);
_documentRepository.Save();
return null;
}
model.ProviderTypeList = new SelectList(_providerTypeRepository.All.OrderBy(x => x.Value), "ID", "Value");
model.PatientTypeList = new SelectList(_patientTypeRepository.All.OrderBy(x => x.Value), "ID", "Value");
return View(model);
}
AutoMapper 構成
Mapper.CreateMap<Document, DocumentEditModel>();
Mapper.CreateMap<DocumentEditModel, Document>();