0

私の質問はこの質問の続きです:

MVC 4 のフィルターとページネーション

開始するコード ブロックで:

<div>Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber)
of @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>

上記のコードはうまく機能しましたが、従業員の長いリストの 1 つに過ぎませんでした。上記のコードをここに示すページネーション セクションとマージするにはどうすればよいですか。

<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>
4

2 に答える 2

1

グリッドとページングのもう 1 つの優れた代替手段: MvcContrib Grid

于 2012-11-16T17:30:11.593 に答える
1

私はそれを考え出した。最初の行を から に変更し、2 つのチャンクを一緒に叩くだけ@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(" ");
    @:>>
}

于 2012-11-16T18:14:10.987 に答える