私はかなりの間これを苦労しました。今日私はついに次のコードを書いた。Asp.Net MVCでのページングリンクの最小化
ViewModelにはint
プロパティが含まれています。このプロパティは後でデータが分割されたページの数を表示します。
コントローラは、指定された行数を取ることによって、データを分割して、ページングが発生した場合に、pageNumber * recordsPerPage
を見てみましょうによって分割:
のViewModel
public class ThreadPostsViewModel
{
public Thread Thread { get; set; }
public List<Post> Posts { get; set; }
public int Pages { get; set; }
}
コントローラ
このコードは表示
@model Ortund.Models.ThreadPostsViewModel
<div class="paging">
@for (int i = 1; i < Model.Pages; i++)
{
string Url = String.Format("/View/Thread/{0}?page={1}", Model.Thread.Id, i);
<a href="@Url">@i</a>
}
</div>
<div class="posts-list">
@foreach (var Post in Model.Posts)
{
<div class="post" id="@Post.Id">
</div>
}
</div>
、300枚のポストを仮定することは、データベースから選択され、10枚のポストをページごとに指定され、その後、30ページがあるべきです。
あなたのページデザインに収まる膨大な量のリンクであっても、これらのページングリンクを最小限に抑えて表示するにはどうすればいいですか?例えば、10ページングリンクは、8ページ目でリンクがたとえば、3-13を示していますか?
が好ましいであろう次のようにしても、ページングのリンクのディスプレイを有する:
現在のページのコントローラに置く値で1 2 3 4 5 ... 90 91 92 93 94
[Mvc.PagedListソースコード](https://github.com/troygoode/PagedList)を見てください。 'Posts'が最大値の' PostsPerPage'を持っているので 'Pages = Posts.Count/PostsPerPage'の現在のコードは0または1を返します) –