使用AutoMapper到一个视图模型映射到
问题描述:
我已经创建低于AutoMapper映射配置类代码的模型接口:使用AutoMapper到一个视图模型映射到
public static class MilitaryBrochureViewModelMapper
{
public static void Configure()
{
ConfigureMilitaryBrochureMapping();
}
private static void ConfigureMilitaryBrochureMapping()
{
Mapper.CreateMap<IBrochureModel, MilitaryBrochureViewModel>().ForMember(dest => dest.Rank, opt => opt.MapFrom(src => src.JobTitle));
}
}
我映射在MilitaryBrochureViewModel领域排名到可变JOBTITLE在IBrochureModel接口时,我导航到MilitaryBrochureViewModel它告诉我,我还没有完全实现接口,我需要放置任何视图模型或接口或两者都告诉他们我已经使用AutoMapper创建这两个变量之间的映射?
下面是视图模型和接口,我使用:
视图模型
public class MilitaryBrochureViewModel : IBrochureModel
{
[Key]
public int Id { get; set; }
public virtual int TestMode { get; set; }
[DataType(DataType.Text)]
[Required(AllowEmptyStrings = false, ErrorMessageResourceName = "required", ErrorMessageResourceType = typeof(Mui))]
[Display(Name = "Salutation", Description = "Salutation_Description", GroupName = "Personal", ResourceType = typeof(Mui))]
public string Salutation { get; set; }
[DataType(DataType.Text)]
[Required(AllowEmptyStrings = false, ErrorMessageResourceName = "required", ErrorMessageResourceType = typeof(Mui))]
[Display(Name = "First_Name", Description = "First_Name_Description", GroupName = "Personal", ResourceType = typeof(Mui))]
[RegularExpression(@"^([\u00c0-\u024f]|[A-z]|[']|[ ]|[\-]){2,20}$", ErrorMessageResourceName = "FirstNameRegExError", ErrorMessageResourceType = typeof(Mui))]
public string FirstName { get; set; }
[DataType(DataType.Text)]
[Required(AllowEmptyStrings = false, ErrorMessageResourceName = "required", ErrorMessageResourceType = typeof(Mui))]
[Display(Name = "Last_Name", Description = "Last_Name_Description", GroupName = "Personal", ResourceType = typeof(Mui))]
[RegularExpression(@"^([\u00c0-\u024f]|[A-z]|[']|[ ]|[\-]){2,20}$", ErrorMessageResourceName = "LastNameRegExError", ErrorMessageResourceType = typeof(Mui))]
public string LastName { get; set; }
[Required(AllowEmptyStrings = false, ErrorMessageResourceName = "required", ErrorMessageResourceType = typeof(Mui))]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email", Description = "Email_Description", GroupName = "Personal", ResourceType = typeof(Mui))]
[RegularExpression(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$", ErrorMessageResourceName = "EmailInputValidatorError", ErrorMessageResourceType = typeof(Mui))]
public virtual string Email { get; set; }
[Required(AllowEmptyStrings = false, ErrorMessageResourceName = "required", ErrorMessageResourceType = typeof(Mui))]
[DataType(DataType.Text)]
[Display(Name = "Military_Rank", Description = "Military_Rank_Description", GroupName = "Personal", ResourceType = typeof(Mui))]
[StrMinLen(5)]
[StrMaxLen(50)]
public string Rank { get; set; }
[Required(AllowEmptyStrings = false, ErrorMessageResourceName = "required", ErrorMessageResourceType = typeof(Mui))]
[DataType(DataType.Text)]
[Display(Name = "Company", Description = "Company_Description", GroupName = "Personal", ResourceType = typeof(Mui))]
public string Company { get; set; }
[Required]
[Display(Name = "Do_Not_Pass_On", Description = "Do_Not_Pass_On_Description", GroupName = "Company", ResourceType = typeof(Mui))]
public bool DoNotPassOn { get; set; }
[DataType(DataType.Text)]
[Required(AllowEmptyStrings = false, ErrorMessageResourceName = "required", ErrorMessageResourceType = typeof(Mui))]
[Display(Name = "Lead_Source", GroupName = "Terms", Description = "Lead_Source_Description", ResourceType = typeof(Mui))]
public string LeadSource { get; set; }
}
接口
public interface IBrochureModel
{
int TestMode { get; set; }
string Salutation { get; set; }
string FirstName { get; set; }
string LastName { get; set; }
string Email { get; set; }
string Company { get; set; }
string JobTitle { get; set; }
string LeadSource { get; set; }
bool DoNotPassOn { get; set; }
}
答
你的接口要求各string JobTitle { get; set; }
。您在MilitaryBrochureViewModel
上没有任何此类成员。 C#编译器不关心AutoMapper将一个道具转换为另一个道具,它只是出错,因为你有一个类正在实现一个接口,但缺少一个接口成员。
答
将下面的行添加到您的视图模型中。
public string JobTitle { get; set; }
这样你的视图模型将有排名和JOBTITLE。
您可以查看哪些领域JOBTITLE或然显示
答
控制已更改为我做了它在以前版本的应用程序更改级别来JOBTITLE唯一的区别是,因为排名的显示名称的方式,无论如何,jobtitle都作为jobtitle发送到数据库。
[Required(AllowEmptyStrings = false, ErrorMessageResourceName = "required", ErrorMessageResourceType = typeof(Mui))]
[DataType(DataType.Text)]
[Display(Name = "Military_Rank", Description = "Military_Rank_Description", GroupName = "Personal", ResourceType = typeof(Mui))]
[StrMinLen(5)]
[StrMaxLen(50)]
public string JobTitle { get; set; }
你可以发布你的接口和viewmodel实现 – swapneel 2013-03-26 11:52:58