C# ASP.NETMVC中使用AutoMapper的正确方法
我正在尝试开始使用ViewModels,但是我在这篇文章中遇到了问题,没有验证模型中的值,显示在代码下面的监视部分: ModelStats.IsValid=false 我的ItemViewModel是:C# ASP.NETMVC中使用AutoMapper的正确方法,c#,asp.net-mvc,asp.net-mvc-3,automapper,C#,Asp.net Mvc,Asp.net Mvc 3,Automapper,我正在尝试开始使用ViewModels,但是我在这篇文章中遇到了问题,没有验证模型中的值,显示在代码下面的监视部分: ModelStats.IsValid=false 我的ItemViewModel是: public class ItemViewModel { public int ItemId { get; set; } [Display(Name = "Item")] public string ItemName { get; set; } [Dis
public class ItemViewModel
{
public int ItemId { get; set; }
[Display(Name = "Item")]
public string ItemName { get; set; }
[Display(Name = "Description")]
public string Description { get; set; }
[Display(Name = "Price")]
public double UnitPrice { get; set; }
[Range(0.00, 100, ErrorMessage = "VAT must be a % between 0 and 100")]
public decimal VAT { get; set; }
[Required]
public string UserName { get; set; }
}
我相信这将是一件简单的事情,但我只是看了这么久,我不知道我做错了什么。有人能给我建议吗
谢谢,就验证失败而言,请标记 如果您不想在表单中提供
用户名
,请从ItemViewModel
为了使用。您需要创建一个映射,例如
Mapper.CreateMap<Item, ItemViewModel>();
Mapper.CreateMap();
然后是地图
var itemModel = Mapper.Map<Item, ItemViewModel>(model);
var itemModel=Mapper.Map(模型);
注意:
CreateMap
只能创建一次,您应该在启动时注册它。请务必阅读。确保您的项目视图模型
,项目
类的字段是否相同。若相同的字段具有相同的数据类型,则AutoMapper可以正常工作
Mapper.CreateMap< Item, ItemViewModel>();
Mapper.Map< Item, ItemViewModel>(ItemVM);
Mapper.CreateMap- ();
Map
- (ItemVM);
如果两个类中的字段不相同,请确保自定义映射中的字段相同
Mapper.CreateMap<UserDM, UserVM>().ForMember(emp => emp.Fullname,
map => map.MapFrom(p => p.FirstName + " " + p.LastName));
Mapper.CreateMap().formMember(emp=>emp.Fullname,
map=>map.MapFrom(p=>p.FirstName+“”+p.LastName));
在上面的自定义映射中,
Fullname
是与FirstName
映射的UserVM
字段,LastName
字段来自UserDM
(此处UserDM
是域模型,UserVM
是视图模型)。视图模型的验证在设置UserName
属性之前,因此,我猜,它是空的,验证失败。为什么在ViewModel中需要一个必需的用户名?