错误:无法将类型为“System.Collections.Generic.List”的对象转换为类型“X.PagedList.IPagedList”。

3

我使用 List 模型而不是 IEnumerable

我的控制器

 public ActionResult Index(int? page)
        { 
            var pageNumber = page ?? 1;
            var itemCount = employees.ToPagedList(pageNumber, 5);
            return View(employees.ToList());
        }

我的观点

@Html.Partial("EmployeeList", Model.AsEnumerable())

@Html.PagedListPager((IPagedList)Model.AsEnumerable(), page => Url.Action("Index", new { page }))
2个回答

2

IEnumerable<EmployeeViewModel> 无法直接转换为 IPagedList,即使使用 (IPagedList)Model.AsEnumerable() ,因为它们是不同的实例。您应该使用 ToPagedList 方法返回一个 PagedList 实例作为 View 参数(假设 employeesList<EmployeeViewModel> 或视图模型数组):

public ActionResult Index(int? page)
{ 
    var pageNumber = page ?? 1;
    return View(employees.ToPagedList(pageNumber, 5));
}

然后在PagedListPager中使用绑定模型,像这样:

@model PagedList.IPagedList<EmployeeViewModel>
@using PagedList.Mvc; 

@Html.PagedListPager(Model, page => Url.Action("Index", new { page }))

IPagedList通过Model传递给HtmlHelper.Partial

@Html.Partial("EmployeeList", Model)

类似问题:

如何在MVC.NET中加载前x个项目并给用户选项来加载更多


修复后,显示感谢。传递到字典中的模型项类型为“X.PagedList.PagedList”,但此字典需要类型为“System.Collections.Generic.List”的模型项。 - desperatenoob
这是什么意思? @Html.Partial("EmployeeList", Model)@Html.PagedListPager(Model, page => Url.Action("Index", new { page })) - desperatenoob
是的,Model.AsEnumerable() 应该改为 Model,因为您想要绑定 PagedList(前者将返回 IEnumerable<PagedList>)。 - Tetsuya Yamamoto
即使我将其更改为Model,它仍然显示错误:传递到字典中的模型项的类型为“X.PagedList.PagedList1 [App.Models.EmployeeViewModel]”,但此字典需要类型为“System.Collections.Generic.List1 [App.Models.EmployeeViewModel]” 的模型项。您需要哪些代码来验证我的错误?感谢您的耐心和帮助。 - desperatenoob
啊,是的,我一直在编辑错误的视图而不是使用部分视图,非常感谢你! - desperatenoob
显示剩余3条评论

0

控制器操作

    public ActionResult Index(int? page)
        { 
            var pageNumber = page ?? 1;            
            return View(employees.ToList().ToPagedList(pageNumber, 5));
        }


查看页面

    @using PagedList
    @using PagedList.Mvc
    @model IEnumerable <Employee>

    @Html.Partial("EmployeeList", Model)

    @Html.PagedListPager((IPagedList)Model, page => Url.Action("Index", new { page }))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接