如何在 MVC 中对参数化列表进行分页?

问题描述 投票:0回答:2

我想使用参数类别在产品列表中分页,我使用

PagedList
mvc 控制器样本

   public ActionResult ListProduct(int id, int? pagePos)
        {
            var list = db.List_Product.Where(e => e.CategoryID == id);
            int pageNumber = (pagePos ?? 1);
            return View(list.ToList().ToPagedList(pageNumber, 2));
        }

并在视图ListProduct.cshtml中

@*@model IEnumerable<Sales.Areas.Users.Models.List_Product>*@
    @model PagedList.IPagedList<sales.areas.users.models.list_product> @*Maybe error in line here*@
    @using PagedList.Mvc

    <table class="table">
    <tr>
        <th>
            Name
        </th>
        <th>
            ID
        </th>

        <th></th>
    </tr>

    @foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ID)
        </td>
    </tr>
    }   
    </table>

    Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount

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

它不起作用,并收到此错误

CS0234: The type or namespace name 'IPagedLis' does not exist in the namespace 'PagedList' (are you missing an assembly reference?)
,尽管我之前添加了参考
PagedList

asp.net-mvc parameters pagination
2个回答
0
投票

如果没有有关错误的更多信息,很难找到罪魁祸首。您应该禁用自定义错误并在 web.config 中激活调试

首先检查ActionResult ListProduct中的变量id是否被传递。

然后在你的视图中改变:

@model PagedList.IPagedList<sales.areas.users.models.list_product> 

与:

@model PagedList.IPagedList<Sales.Areas.Users.Models.List_Product> 

0
投票

确保所有必需的命名空间都位于该命名空间中的任何类型的使用之前

@using PagedList; //import this so we can cast our list to IPagedList (only necessary because ViewBag is dynamic)
@using PagedList.Mvc; //import this so we get our HTML Helper 

@model IPagedList<Sales.Areas.Users.Models.List_Product>
© www.soinside.com 2019 - 2024. All rights reserved.