我希望你能夠幫助我解決我在開發測試ASP.NET MVC應用程序時遇到的Automapper問題。AutoMapper複雜的ViewModel屬性
我已經看了一下,我找不到任何相當像我試圖用嵌套的ViewModels實現的東西。
基本上,我有這2個領域模型...
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周的ViewModels ...
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; }
}
}
而且......
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; }
}
}
我想將ContactViewModel返回到我的視圖,並使用名稱屬性填充名稱屬性來填充聯繫人域對象。
我有我的控制器這段代碼...
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對象不重複的代碼,因爲在這個簡單的例子是因爲...
@model Test.WebUI.Models.NameViewModel
First
@Model.Name_Forename
Last
@Model.Name_Surname
如果有人能幫我解釋一下如何用AutoMapper填充ContactViewModel的NameViewModel對象,我會非常感激。
謝謝。 吉姆
感謝Darin,你能否告訴我如何正確實例化Name屬性?還有爲什麼這個映射是自動完成的。 Jim – James