1

私はグリッドを使用していません。MvcContrib Pager を使用しているだけです。ページャー用に作成された部分ビューがあり (結果の上部と下部に簡単に表示できるように)、次の@Html. Pagerようにメソッドを呼び出します。

 @Html.Pager(Model.PagedPrograms).First("<<").Last(">>").Next(">").Previous("<").Format("Item {0} - {1} of {2} ")

これは、すべてのパラメーターが QueryString を介してページに渡される限り、追加の微調整なしで機能します。

ページサイズを変更するオプションをユーザーに提供したいと思います(たとえば、20、50、すべて)...コントローラー側で簡単に処理でき、次のように書くことができます

@if (Model is Foo) {
     @Html.ActionLink<SearchController>(sc => sc.Foo(var1, var2, var3, 20), "20")
     @Html.ActionLink<SearchController>(sc => sc.Foo(var1, var2, var3, 50), "50");
     @Html.ActionLink<SearchController>(sc => sc.Foo(var1, var2, var3, -1), "All");
}

しかし、この Pager を使用する可能性のあるモデル タイプごとにそれを行う必要があります。

IPagedProgramList現在、Pager は取る(提供する)ビューからのみ呼び出され、IPagination<ProgramDTO> { get; }そのインターフェイスを実装する 2 つの ViewModels (単純な検索と高度な検索) があります。しかし、このプロジェクトが成長し、そのインターフェイスを使用する新しい ViewModel を追加した場合、Pager の部分ビューを更新する必要があり、それは悪い / スケーリングしない / などです。

4

1 に答える 1