bootstrap adminlte教程4-4:文章管理界面实现分页功能
1.安装分页控件
数据查询免不了要分页。这里我们用一个名为PagedList的插件来实现这个功能。
如下所示,在菜单栏里选择工具->库程序包管理->程序包管理控制台。

之后会在Visual Studio窗口的下面看到一个程序包管理控制台窗口。在其中输入Install-Package PagedList.Mvc。PagedList就会自动安装到项目中。窗口如下所示。

1. 修改控制器的index方法
//public async Task<ActionResult> Index(string SeachColumnString, string SearchString)
public ActionResult Index(string SeachColumnString, string SearchString, int? page) ///增加了一个int?page
{
ViewBag.drolistmenu =db.CmsColumns.Select(g => new SelectListItem
{
Text = g.Name,
Value = g.Id.ToString(),
Selected = false
});
if (!string.IsNullOrEmpty(SeachColumnString) && !string.IsNullOrEmpty(SearchString)) //当二个变量都不为空时,page=1
{
page = 1;
}
ViewBag.SeachColumnString = SeachColumnString; //将二个搜索变量存为viewbag送到前台
ViewBag.SearchString = SearchString;
var seachindex = from w in db.CmsContents.OrderByDescending(c => c.CreatTime)
select w;
if (!string.IsNullOrEmpty(SeachColumnString))
{
int a1 = int.Parse(SeachColumnString);
if (!string.IsNullOrEmpty(SearchString))
{
seachindex = seachindex.Where(x => x.ColumnId == a1).Where(y =>y.Title.Contains(SearchString));
}
else
{
seachindex = seachindex.Where(x => x.ColumnId == a1);
}
}
else
{
if (!string.IsNullOrEmpty(SearchString))
{
seachindex = seachindex.Where(x => x.Title.Contains(SearchString));
}
}
int pageNumber = page ?? 1; //定义第几页
int pageSize = 3; //每页显几条
//通过ToPagedList扩展方法进行分页
//IPagedList<CmsContent> pagedList = seachindex.ToPagedList(pageNumber, pageSize);
return View(seachindex.ToPagedList(pageNumber, pageSize)); //用topagelist显示
}
前台
@*@model IEnumerable<jsdhh2.Models.CmsContent>*@
@model PagedList.IPagedList<jsdhh2.Models.CmsContent>
@using PagedList.Mvc;
<link href="~/Content/PagedList.css" rel="stylesheet" />
@{
ViewBag.Title = "Index"; Layout = "~/Views/Shared/_AdminLayout.cshtml";
}
<!-- Content Header (Page header) -->
<section class="content-header">
<h1>
文章管理
<small>分为超管和本人</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-dashboard"></i> Level</a></li>
<li class="active">Here</li>
</ol>
</section>
<!--end Content Header (Page header) -->
<!-- Main content -->
<section class="content">
<div class="col-xs-12">
<div class=" ">
<div class="panel panel-default">
<div class="panel-heading">
<a class="btn btn-primary" href="/CmsContents/Create">新建</a>
</div>
<div class="panel-body">
<form class="form-inline">
<div class="form-group">
@Html.DropDownList("SeachColumnString", new SelectList(ViewBag.drolistmenu, "Value", "Text"), "请选择")
</div>
<div class="form-group">
<div class="input-group col-md-12">
@Html.TextBox("SearchString", "", new { @class = "form-control", @Style = "display:inline" })
<span class="input-group-btn ">
<input id="btnSearch" class="btn btn btn-primary" type="submit" value="搜索">
</span>
</div>
</div>
</form>
</div>
</div>
</div>
<div class="box">
<div class="box-body table-responsive no-padding">
<table class="table">
<tr>
<th>
标题
</th>
<th>创建时间
</th>
<th>
创建者
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.CreatTime, "DateTimeTemplate")
</td>
<td>@Html.DisplayFor(modelItem => item.CreatUser)
</td>
<td>
@Html.ActionLink("修改", "Edit", new { id = item.Id }, new { @class = "btn btn-info" }) |
@Html.ActionLink("阅读", "Details", new { id = item.Id }, new { @class = "btn btn-success" }) |
@Html.ActionLink("删除", "Delete", new { id = item.Id }, new { @class = "btn btn-warning" })
</td>
</tr>
}
</table>
</div>
</div><!-- /.box -->
</div>
<!-- Main content -->
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
@Html.PagedListPager(Model, page => Url.Action("Index",
new { page, SeachColumnString = ViewBag.SeachColumnString, SearchString = ViewBag.SearchString }))
</section>
前台注意,又送还二个搜索变量。
结果。

浙公网安备 33010602011771号