C# MVC4分页(续)
我的问题是这个问题的延续: 在开始的代码块中:C# MVC4分页(续),c#,razor,asp.net-mvc-4,C#,Razor,Asp.net Mvc 4,我的问题是这个问题的延续: 在开始的代码块中: <div>Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount Page@(Model.PageCountitem.EmployeeName) @ActionLink(“编辑”,“编辑”,新的{id=item.EmployeeID})| @ActionLink(“详细信息”,“详细信息”,新的{id=item.
<div>Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber)
of @Model.PageCount
Page@(Model.PageCount
我已经在我的项目中实现了这一点,它非常适合创建页面和适当的导航链接。但它并没有从数据库中提取我的实际列表;只是页面链接
以下是我以前在Index.cshtml文件中的内容:
@model IEnumerable<PtoTracker.Employee>
@{
ViewBag.Title = "Employees";
}
<h2>Employees</h2>
<p>
@Html.ActionLink("Add New Employee", "Create")
</p>
<table>
<tr>
<th></th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.EmployeeName)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.EmployeeID }) |
@Html.ActionLink("Details", "Details", new { id=item.EmployeeID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.EmployeeID })
</td>
</tr>
}
</table>
@model IEnumerable
@{
ViewBag.Title=“员工”;
}
员工
@ActionLink(“添加新员工”、“创建”)
@foreach(模型中的var项目){
@DisplayFor(modelItem=>item.EmployeeName)
@ActionLink(“编辑”,“编辑”,新的{id=item.EmployeeID})|
@ActionLink(“详细信息”,“详细信息”,新的{id=item.EmployeeID})|
@ActionLink(“删除”,“删除”,新的{id=item.EmployeeID})
}
上面的代码非常有效,但它只是一个长长的员工列表。如何将上述代码与此处显示的分页部分合并:
<div>Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber)
of @Model.PageCount
@if (Model.HasPreviousPage)
{
@Html.ActionLink("<<", "Index", new { page = 1, sortOrder = ViewBag.CurrentSort });
@Html.Raw(" ");
@Html.ActionLink("< Prev", "Index", new { page = Model.PageNumber - 1, sortOrder = ViewBag.CurrentSort });
}
else
{
@:<<
@Html.Raw(" ");
@:< Prev
}
@if (Model.HasNextPage)
{
@Html.ActionLink("Next >", "Index", new { page = Model.PageNumber + 1, sortOrder = ViewBag.CurrentSort });
@Html.Raw(" ");
@Html.ActionLink(">>", "Index", new { page = Model.PageCount, sortOrder = ViewBag.CurrentSort });
}
else
{
@:Next >
@Html.Raw(" ");
@:>>
}
</div>
Page@(Model.PageCount”,“Index”,新的{page=Model.PageCount,sortOrder=ViewBag.CurrentSort});
}
其他的
{
@:下一步>
@Html.Raw(“”);
@:>>
}
网格和分页的另一个很好的选择:我找到了。我只需将第一行从@model IEnumerable…
更改为@model PageList.IPagedList…
,然后将这两个块拍打在一起
这是我的工作代码:
@model PagedList.IPagedList<PtoTracker.Employee>
@{
ViewBag.Title = "Employees";
}
<h2>Employees</h2>
<p>
@Html.ActionLink("Add New Employee", "Create")
</p>
<table>
<tr>
<th></th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.EmployeeName)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.EmployeeID }) |
@Html.ActionLink("Details", "Details", new { id=item.EmployeeID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.EmployeeID })
</td>
</tr>
}
</table>
<div>
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber)
of @Model.PageCount
@if (Model.HasPreviousPage)
{
@Html.ActionLink("<<", "Index", new { page = 1, sortOrder = ViewBag.CurrentSort });
@Html.Raw(" ");
@Html.ActionLink("< Prev", "Index", new { page = Model.PageNumber - 1, sortOrder = ViewBag.CurrentSort });
}
else
{
@:<<
@Html.Raw(" ");
@:< Prev
}
@if (Model.HasNextPage)
{
@Html.ActionLink("Next >", "Index", new { page = Model.PageNumber + 1, sortOrder = ViewBag.CurrentSort });
@Html.Raw(" ");
@Html.ActionLink(">>", "Index", new { page = Model.PageCount, sortOrder = ViewBag.CurrentSort });
}
else
{
@:Next >
@Html.Raw(" ");
@:>>
}
@model PagedList.IPagedList
@{
ViewBag.Title=“员工”;
}
员工
@ActionLink(“添加新员工”、“创建”)
@foreach(模型中的var项目){
@DisplayFor(modelItem=>item.EmployeeName)
@ActionLink(“编辑”,“编辑”,新的{id=item.EmployeeID})|
@ActionLink(“详细信息”,“详细信息”,新的{id=item.EmployeeID})|
@ActionLink(“删除”,“删除”,新的{id=item.EmployeeID})
}
页码@(Model.PageCount”,“Index”,新的{page=Model.PageCount,sortOrder=ViewBag.CurrentSort});
}
其他的
{
@:下一步>
@Html.Raw(“”);
@:>>
}
如果您不想自己编写分页,可以使用@jrummell我使用的是PagedList。您没有使用Html帮助程序。。。这将是一行用于分页的代码:
@Html.PagedListPager((IPagedList)ViewBag.OnePageOfProducts,page=>Url.Action(“Index”,new{page}))
该链接未列出支持的MVC4。