c# - PagedList View 模型实现

标签 c# asp.net-mvc pagedlist

我正在尝试找出在 asp.net MVC 中使用 ViewModel 实现分页列表的正确方法。

假设我有以下 PagedClientViewModel:

public class PagedClientViewModel
{
    public PagedList.IPagedList<ClientViewModel> Clients { get; set; }
}

public class ClientViewModel
{
    public string ClientNumber { get; set; }
    public string ClientName { get; set; }       
}

我的 View 将引用模型如下:

@model PagedClientViewModel

Action 方法看起来像这样:

    public ActionResult Index(int? page)
    {
        var pageNumber = page ?? 1;

        var clients = GetAllClients();

        var onePageOfClients = clients.ToPagedList(pageNumber, 25);

        PagedClientViewModel model = new PagedClientViewModel();

        var clientViewModels = new List<ClientViewModel>();

        foreach (var client in clients)
        {
            ClientViewModel clientVM = new ClientViewModel
            {
                ClientName = client.CLIENTNAME,
                ClientNumber = client.CLIENTNO,         
            };
            clientViewModels.Add(clientVM);
        }                    

        model.Clients = //how do I add the clientViewModels to the PagedList<ClientViewModel>?

        return View(model);
    }

我不想在创建 View 模型时从数据库中迭代整个客户端记录列表 - 我是否通过包含分页列表的 View 模型使事情过于复杂?我不想使用 ViewBag!

我的 ViewModel 应该是什么样的?

最佳答案

通过使用答案的组合使这个工作得很好:

    public ActionResult Index(PagedClientViewModel model)
    {
        var pageIndex = model.Page ?? 1;
        var clients = from client in GetAllClients() orderby client.CLIENTNUMBER
                      select new ClientViewModel
                          {
                              ClientName = client.CLIENTNAME,
                              ClientNumber = client.CLIENTNO

                          };        

        model.Clients = clients.ToPagedList(pageIndex, 25);

        return View(model);
    }


public class PagedClientViewModel
{
    public int? Page { get; set; }
    public PagedList.IPagedList<ClientViewModel> Clients { get; set; }
}

public class ClientViewModel
{
    public string ClientNumber { get; set; }
    public string ClientName { get; set; }       
}

关于c# - PagedList View 模型实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13799255/

相关文章:

c# - 将 PNG 字节数组转换为 JPEG 字节数组

c# - html敏捷包: Find second table within a div

c# - 单元测试依赖于 UserManager 和 RoleManager

c# - PagedList 在第二页和之后的页面上丢失搜索过滤器

android - 如何在订阅 liveData 后仅针对新更新观察 liveData

c# - WPF 数据网格在文本更改时更改颜色

c# - 如何通过最高 ID 获取 List<object> 中的值?

asp.net-mvc - MVC 4 代码优先ForeignKeyAttribute 属性...类型...无效

javascript - 我的 table 上的 jquery 表排序器出现问题,我收到了 json 文本墙

html - 如何在 PagedList.Mvc 中将页码放在一行中?