Asp.net mvc 需要从两个对象映射到单个对象

Asp.net mvc 需要从两个对象映射到单个对象,asp.net-mvc,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 s

我有以下实体模型:

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; }
    }
}
公共类项目列表视图模型
{
公共IEnumerable项目列表{get;set;}
公共分页信息分页{get;set;}
公共类项目信息
{
公共字符串标题{get;set;}
公共字符串Slug{get;set;}
公共字符串内容{get;set;}
公共字符串类别{get;set;}
公共字符串客户端{get;set;}
公共整数年{get;set;}
}
公共类分页信息
{
公共整数TotalItems{get;set;}
public int ItemsPerPage{get;set;}
public int CurrentPage{get;set;}
公共整型TotalPages{get;set;}
}
}
在我的控制器中,我希望通过使用两个不同的对象填充视图模型来准备视图模型:

  • 项目清单
  • 寻呼信息
  • 这是我的控制器:

    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);
    }
    
    公共视图结果列表(字符串类别,int page=1) { IEnumerable projectList=m_Business.GetProjects(类别,第10页); PaginInfo PaginInfo=m_Business.getPaginInfo(类别,第10页); //这里我需要地图!! ProjectListViewModel视图模型=。。。。。 返回视图(viewModel); } 那么,我如何在控制器中继续?我知道我们可以使用automapper从一个对象映射到另一个对象,但这里我需要从两个对象映射到一个对象。


    谢谢。

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

    它提供了一些示例

    然后您可以使用如下代码:

     var personViewModel = EntityMapper.Map<PersonViewModel>(person, address, comment);
    
    var personViewModel=EntityMapper.Map(个人、地址、评论);
    
    您可以扩展AutoMapper以映射多个对象

    它提供了一些示例

    然后您可以使用如下代码:

     var personViewModel = EntityMapper.Map<PersonViewModel>(person, address, comment);
    
    var personViewModel=EntityMapper.Map(个人、地址、评论);
    
    @Darin:谢谢,但是在视图模型中是否可以像我的问题中那样嵌套类?我下载了博客中提供的例子,尝试适应一个嵌套类,并尝试映射,但失败了。@达林:我的意思是,让我们看看URL中提供的博客,在这个例子中,他的视图模型类包含一些属性(所有在同一级别),但没有嵌套类。我想要一个视图模型包含对象的解决方案。谢谢。@Bronzato使用AutoMapper可以映射嵌套类。请看一看,正如您所看到的,您可以使用默认配置(Order.Customer.Name=>CustomerName),也可以使用Mapper.CreateMap.ForMember(..)@Darin:谢谢,但是否可以像我的问题一样在视图模型中嵌套类?我下载了博客中提供的例子,尝试适应一个嵌套类,并尝试映射,但失败了。@达林:我的意思是,让我们看看URL中提供的博客,在这个例子中,他的视图模型类包含一些属性(所有在同一级别),但没有嵌套类。我想要一个视图模型包含对象的解决方案。谢谢。@Bronzato使用AutoMapper可以映射嵌套类。看一看,正如您所看到的,您可以使用默认配置(Order.Customer.Name=>CustomerName),也可以使用Mapper.CreateMap.ForMember(..)对其进行配置