[英]Correct way to use AutoMapper in ASP.Net MVC
我正在尝试开始使用ViewModels - 但是我遇到了这个POST无法验证的问题 - 模型中的值显示在代码下方的Watch部分中:
ModelStats.IsValid = false
我的ItemViewModel是:
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; }
}
我相信这会很简单 - 但我一直在看它这么久,我无法弄清楚我做错了什么。 任何人都可以建议吗?
谢谢,马克
就验证失败而言。
如果您未在表单中提供UserName
,则从ItemViewModel
删除[Required]
为了使用AutoMapper
首先,创建一个地图,例如
Mapper.CreateMap<Item, ItemViewModel>();
然后映射
var itemModel = Mapper.Map<Item, ItemViewModel>(model);
请参阅: 如何使用AutoMapper? https://github.com/AutoMapper/AutoMapper/wiki/Getting-started中的部分
确保您的ItemViewModel
, Item
类具有相同的字段。 如果具有相同数据类型AutoMapper的相同字段工作正常。
Mapper.CreateMap< Item, ItemViewModel>();
Mapper.Map< Item, ItemViewModel>(ItemVM);
如果两个类中的字段不相同,请确保与自定义映射相同。
Mapper.CreateMap<UserDM, UserVM>().ForMember(emp => emp.Fullname,
map => map.MapFrom(p => p.FirstName + " " + p.LastName));
在上面的自定义映射Fullname
是UserVM
与映射领域FirstName
, LastName
从田地UserDM
(这里UserDM
是域模型, UserVM
是视图模型)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.