asp.net mvc X.PagedList分页,并实现每页展示多少条数据选择以及指定跳转页的代码
时间: 2024-03-26 11:38:58 浏览: 154
好的,下面是ASP.NET MVC中使用X.PagedList分页,并实现每页展示多少条数据选择以及指定跳转页的示例代码:
```csharp
using System.Linq;
using X.PagedList;
public class UserController : Controller
{
private ApplicationDbContext db = new ApplicationDbContext();
// 每页展示的数据条数
private int pageSize = 10;
public ActionResult Index(int? page, int? pageSize, int? pageGoTo)
{
// 获取数据
var data = db.Users.OrderBy(u => u.Id);
// 获取当前页码
int pageNumber = page ?? 1;
// 设置每页展示的数据条数
if (pageSize != null && pageSize > 0)
{
this.pageSize = (int)pageSize;
}
// 获取指定页的数据
var pagedData = data.ToPagedList(pageNumber, this.pageSize);
// 处理跳转页的请求
if (pageGoTo != null && pageGoTo > 0)
{
// 跳转到指定页
pagedData = data.ToPagedList((int)pageGoTo, this.pageSize);
}
// 将分页数据传递给视图
return View(pagedData);
}
}
```
以上代码中,我们首先设置了每页展示的数据条数为10,然后在Index方法中获取数据并设置分页参数。如果请求中包含了pageSize参数,则使用请求中的参数值来设置每页展示的数据条数。
接着,我们处理了pageGoTo参数的请求,如果请求中包含了pageGoTo参数,则跳转到指定页。最后,将分页数据传递给视图进行展示。
在视图中,我们可以使用`@Html.PagedListPager`方法来生成分页链接:
```csharp
@using X.PagedList.Mvc;
@using X.PagedList.Mvc.Common;
@model IPagedList<ApplicationUser>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<thead>
<tr>
<th>@Html.DisplayNameFor(model => model.UserName)</th>
<th>@Html.DisplayNameFor(model => model.Email)</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>@Html.DisplayFor(modelItem => item.UserName)</td>
<td>@Html.DisplayFor(modelItem => item.Email)</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.Id }) |
@Html.ActionLink("Details", "Details", new { id = item.Id }) |
@Html.ActionLink("Delete", "Delete", new { id = item.Id })
</td>
</tr>
}
</tbody>
</table>
<div>
@Html.PagedListPager(Model, page => Url.Action("Index", new { page, pageSize = ViewBag.PageSize }), new PagedListRenderOptions() { DisplayLinkToFirstPage = true, DisplayLinkToLastPage = true })
</div>
<div>
@using (Html.BeginForm("Index", "User", FormMethod.Get))
{
<label for="pageSize">每页展示的数据条数:</label>
@Html.DropDownList("pageSize", new List<SelectListItem>
{
new SelectListItem { Text = "5", Value = "5" },
new SelectListItem { Text = "10", Value = "10", Selected = true },
new SelectListItem { Text = "20", Value = "20" },
new SelectListItem { Text = "50", Value = "50" },
}, new { onchange = "this.form.submit();" })
<label for="pageGoTo">跳转到第几页:</label>
<input type="number" id="pageGoTo" name="pageGoTo" min="1" value="@Model.PageNumber" />
<button type="submit">跳转</button>
}
</div>
```
以上代码中,我们首先使用`@Html.PagedListPager`方法生成分页链接。该方法的第一个参数为分页数据,第二个参数为生成链接的URL,第三个参数为渲染选项。
接着,我们使用表单元素来实现每页展示的数据条数选择和指定跳转页的功能。在每页展示的数据条数选择的下拉框中,我们使用了onchange事件来提交表单,以便立即生效。在跳转页的输入框中,我们设置了最小值为1,避免出现无效页码。
希望这个示例能够帮助到您!
阅读全文