如何在ASP.NET MVC中配置AutoMapper属性

时间:2016-10-25 04:41:35

标签: c# automapper

根据GitHUb文档,要使用 AutoMapper.Attributes ,需要执行以下三个步骤:

  1. 创建您要映射的课程。

  2. 将[MapsTo]属性添加到源类,目标类型作为参数。 (或者,您可以使用[MapsFrom]属性将目标类映射到源类型。)

  3. 在要从中映射类型的程序集上调用MapTypes()扩展方法。
  4. 我已完成第1步和第2步,但无法理解如何以及在何处使用第3步:

    这是我的Model类:

    [MapsFrom(typeof(ApplicationRole))]
    public class RoleViewModel
    {
        public int Id { get; set; }
        [Required(AllowEmptyStrings = false)]
        [Display(Name = "Role Name")]
        public string Name { get; set; }
        public string Description { get; set; }
    }
    
    [MapsTo(typeof(RoleViewModel))]
    public class ApplicationRole : IdentityRole<int, ApplicationUserRole>, IRole<int>
    {
        public string Description  { get; set; }
    }
    

    这是我的控制器方法:

    public ActionResult Index()
    {
        List<ApplicationRole> applicationRoles = RoleManager.Roles.ToList();
        List<RoleViewModel> roleList = Mapper.Map<List<RoleViewModel>>(applicationRoles);  
        return View(roleList);
    }
    

    有人会告诉我如何以及在哪里调用 MapTypes() 扩展方法对我想要映射我的类型的程序集按照第3步中的建议 AutoMapper.Attributes 文档。

1 个答案:

答案 0 :(得分:1)

我会在Controller中做(最终在构造函数中):

 typeof(RoleViewModel).Assembly.MapTypes();

如果您安装Automapper的第4版,则可以解决此问题,因为在上一版本中,属性不起作用。因此,请在Package-Manager控制台中添加以下说明:

uninstall-package Automapper

install-package Automapper -version 4.2.1