Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NETMVC中使用AutoMapper的正确方法_C#_Asp.net Mvc_Asp.net Mvc 3_Automapper - Fatal编程技术网

C# ASP.NETMVC中使用AutoMapper的正确方法

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

我正在尝试开始使用ViewModels,但是我在这篇文章中遇到了问题,没有验证模型中的值,显示在代码下面的监视部分:

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; }
   }
我相信这将是一件简单的事情,但我只是看了这么久,我不知道我做错了什么。有人能给我建议吗


谢谢,就验证失败而言,请标记

如果您不想在表单中提供
用户名
,请从
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中需要一个必需的用户名?