使用 MVC 分页列表进行分页
本文关键字:分页 列表 使用 MVC | 更新日期: 2023-09-27 18:35:39
我想实现MVC分页,以便在索引操作上正常工作。
public ActionResult Index(int? page)
{
using (NorthwindEntities db = new NorthwindEntities())
{
CustomersViewModel model = new CustomersViewModel();
//model.Customers = db.Customers.OrderBy(m => m.CustomerID).OrderByDescending(m=>m.CustomerID).Take(10).ToList();
model.Customers = db.Customers.OrderBy(m => m.CustomerID).OrderByDescending(m=>m.CustomerID).Take(10).ToList().ToPagedList(page ?? 1,5);
model.SelectedCustomer = null;
var list = new List<int>();
for (int i = 1; i <= 20; i++)
{
list.Add(i);
}
SelectList selectedList = new SelectList(list);
ViewBag.DdList = selectedList;
//model.Countries = db.Countries.ToList();
model.CountryList = new SelectList(BLDDLCountry.GetCountry(), "CountryId", "CountryName");
model.DisplayMode = "WriteOnly";
return View(model);
}
}
现在在视图上
@Html.PagedListPager(Model, page => Url.Action("Index", new {page, pagesize = 5 }))
仅当我使用 IPagedList 装饰我的视图模型时才被接受
@model PagedList.IPagedList<SingleCRUD.Models.CustomersViewModel>
现在正如我正在使用的那样
public IEnumerable<Customer> Customers { get; set; }
On My ViewModdel 视图不接受客户
@{
foreach (var item in Model.Customers)
{
if (Model.SelectedCustomer != null)
{
if (item.CustomerID ==
Model.SelectedCustomer.CustomerID)
{
@:<tr class="SelectedCustomer">
}
else
{
@:<tr>
}
}
else
{
@:<tr>
}
<td>@item.CustomerID</td>
<td>@item.CompanyName</td>
@*<td><input type="submit"
formaction="/home/select/@item.CustomerID"
value="Select" /></td>*@
<td><input type="submit"
formaction="/home/Edit/@item.CustomerID"
value="Edit" /></td>
<td></td>
@:</tr>
}
}
并且 转到定义 在更改名称空间后已停止在客户上。我的视图模型
public class CustomersViewModel
{
public int CustomerID { get; set; }
public string CompanyName { get; set; }
public string ContactName { get; set; }
public string ContactTitle { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string Region { get; set; }
public Nullable<int> PostalCode { get; set; }
public string Country { get; set; }
public Nullable<int> Phone { get; set; }
public Nullable<int> Fax { get; set; }
public IEnumerable<Customer> Customers { get; set; }
public Customer SelectedCustomer { get; set; }
public string DisplayMode { get; set; }
public List<Country> Countries { get; set; }
public SelectList CountryList { get; set; }
}
所以我在视图级别面临问题,如何正确解决它。
尝试了这些更改
型
public PagedList<Customer> Customers { get; set; }
视图
@model SingleCRUD.Models.CustomersViewModel
@using PagedList;
@using PagedList.Mvc;
@Html.PagedListPager(Model.Customers, page => Url.Action("Index", new { page, pagesize = 5 }))
行动
model.Customers = (PagedList<Customer>)db.Customers.OrderBy(m => m.CustomerID).ToPagedList(page ?? 1, 5);
必须将其显式转换为分页列表,因为存在转换错误,不确定其是否正确。
运行时错误。
'System.Web.Mvc.HtmlHelper' 不包含 'PagedListPager' 的定义,最好的扩展方法重载 'PagedList.Mvc.HtmlHelper.PagedListPager(System.Web.Mvc.HtmlHelper, PagedList.IPagedList, System.Func)' 有一些无效的参数
错误
错误 1 无法将类型"PagedList.IPagedList"隐式转换为"PagedList.PagedList"。存在显式转换(您是否缺少强制转换?
用
@Html.PagedListPager(Model.Customers, page => Url.Action("Index", new { page, pagesize = 5 }))
在 View 上尝试将其写入表单标签以及表单标签的外部。
有点不清楚你声称什么。 @model PagedList.IPagedList<CustomersViewModel>
将不起作用,因为您的模型是CustomersViewModel
但是如果您的使用@model CustomersViewModel
,它将起作用。
如果要显示Customer
的分页列表,则模型属性需要
public IPagedList<Customer> Customers { get; set; }
并在视图中使用
@Html.PagedListPager(Model.Customers, page => Url.Action("Index", new {page, pagesize = 5 }))