需要从两个对象映射到一个对象

时间:2011-12-29 13:06:42

标签: asp.net-mvc

我有以下实体模型:

public class Project
{
    [Key]
    public int ProjectID { get; set; }
    public string Title { get; set; }
    public string Slug { get; set; }
    public string Content { get; set; }
    public string Category { get; set; }
    public string Client { get; set; }
    public int Year { get; set; }
    // more attributes here...
}

我想准备一个视图模型(特定于我的视图)。这是视图模型:

public class ProjectListViewModel 
{
    public IEnumerable<ProjectInfos> ProjectList { get; set; }
    public PagingInfo Paging { get; set; }

    public class ProjectInfos
    {
        public string Title { get; set; }
        public string Slug { get; set; }
        public string Content { get; set; }
        public string Category { get; set; }
        public string Client { get; set; }
        public int    Year { get; set; }
    }

    public class PagingInfo
    {
        public int TotalItems { get; set; }
        public int ItemsPerPage { get; set; }
        public int CurrentPage { get; set; }
        public int TotalPages { get; set; }
    }
}

在我的控制器中,我想通过填充2个不同的对象来准备视图模型:

  1. 项目清单
  2. 寻呼信息
  3. 这是我的控制器:

    public ViewResult List(string category, int page = 1)
    {
        IEnumerable<Project> projectList = m_Business.GetProjects(category, page, 10);
        PagingInfo pagingInfo = m_Business.GetPagingInfo(category, page, 10);
    
        // Here I need to map !!
        ProjectListViewModel viewModel = .....
    
        return View(viewModel);
    }
    

    那么如何在我的控制器中继续?我知道我们可以使用automapper从一个对象映射到另一个但是在这里我需要从两个对象映射到一个对象。

    感谢。

1 个答案:

答案 0 :(得分:6)

您可以扩展AutoMapper以映射多个对象。

Here is a blog提供了一些样本处理。

然后你可以使用这样的代码:

 var personViewModel = EntityMapper.Map<PersonViewModel>(person, address, comment);