在ASP.NET MVC中,使用下拉列表筛选数据时,可能需要对数据进行分页显示以提高用户体验。以下是一种解决方案:
public ActionResult Index(string filter, int page = 1)
{
int pageSize = 10;
int skip = (page - 1) * pageSize;
var query = db.Items.AsQueryable();
if (!string.IsNullOrEmpty(filter))
{
query = query.Where(x => x.Name.Contains(filter));
}
var totalItems = query.Count();
var items = query.Skip(skip).Take(pageSize).ToList();
ViewBag.Filter = filter;
ViewBag.Page = page;
ViewBag.PageSize = pageSize;
ViewBag.TotalItems = totalItems;
return View(items);
}
@using (Html.BeginForm("Index", "Home", FormMethod.Get, new { @class = "form-inline" }))
{
@Html.Label("Filter:")
@Html.TextBox("filter", ViewBag.Filter as string, new { @class = "form-control" })
}
Name
Description
@foreach (var item in Model)
{
@item.Name
@item.Description
}
@if (ViewBag.TotalItems > ViewBag.PageSize)
{
@Html.PagedListPager((IPagedList)Model, page => Url.Action("Index", new { page, filter = ViewBag.Filter }), PagedListRenderOptions.DefaultPlusFirstAndLast)
}