【问题标题】:Automapper and PagedListAutomapper 和 PagedList
【发布时间】:2011-09-03 19:17:46
【问题描述】:

如何映射这样的列表?我的 CreateMap 会是什么样子? PagedList 的类如下所示:

public interface IPagedList
{
    int TotalCount
    {
        get;
        set;
    }

    int PageIndex
    {
        get;
        set;
    }

    int PageSize
    {
        get;
        set;
    }

    bool IsPreviousPage
    {
        get;
    }

    bool IsNextPage
    {
        get;
    }
}

public class PagedList<T> : List<T>, IPagedList
{

    public PagedList(IQueryable<T> source, int index, int pageSize)
    {
        this.TotalCount = source.Count();
        this.PageSize = pageSize;
        this.PageIndex = index;
        this.AddRange(source.Skip(index * pageSize).Take(pageSize).ToList());
    }

    public PagedList(List<T> source, int index, int pageSize)
    {
        this.TotalCount = source.Count();
        this.PageSize = pageSize;
        this.PageIndex = index;
        this.AddRange(source.Skip(index * pageSize).Take(pageSize).ToList());
    }

    public PagedList()
    {
    }

    public int TotalCount
    {
        get;
        set;
    }

    public int PageIndex
    {
        get;
        set;
    }

    public int PageSize
    {
        get;
        set;
    }

    public bool IsPreviousPage
    {
        get
        {
            return (PageIndex > 0);
        }
    }

    public bool IsNextPage
    {
        get
        {
            return (PageIndex * PageSize) <= TotalCount;
        }
    }
}

我的映射代码:

Mapper.CreateMap<User, UserModel>();
var model = Mapper.Map<PagedList<User>, PagedList<UserModel>>(users); // Not quite sure about this.

当我执行上述操作时,只有列表被映射,其他属性如 TotalCount、PageSize 没有被映射。

【问题讨论】:

  • UserUserModel 类的外观如何?这就是您最后要映射的内容,但您没有显示任何内容。
  • @Darin Dimitrov 它们可以是任何东西,它们可以正常映射,只是当我将它们放入此 PagedList 时出现问题。
  • 本主题讨论的正是这个问题:stackoverflow.com/questions/2070850/…

标签: asp.net-mvc automapper


【解决方案1】:

无论您想出什么解决方案,都需要列举您的原始列表。你可以做的是这样的:

var modelList = new PagedList<UserModel>(
    userList.Select(u => Mapper.Map<User, UserModel>(u)).AsQueryable(), 
    index, pageSize);

【讨论】:

  • 它来自另一个PagedList。如果这样做,是否需要手动映射 PagedList 的属性?
  • 服务器返回一个PagedList&lt;User&gt; 我想要PagedList&lt;UserModel&gt;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-12
  • 1970-01-01
  • 1970-01-01
  • 2019-10-27
  • 2018-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多