最小化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; }
}

控制器

private int PostsPerPage = 10;

public ActionResult Thread(int id, int page = 1)
{
    using (OrtundEntities Db = new OrtundEntities())
    {
        // get the thread and its parent data (parent for breadcrumbs)
        var Thread = Db.Threads.Include(t => t.Title).FirstOrDefault(x => x.Id == id);

        // create a list for the Posts
        List<Post> Posts = new List<Post>();

        // select based on paging
        if (page == 1)
            // no paging has happened, get the first set of records
            Posts = Db.Posts.Include(x => x.User).Where(x => x.ThreadId == id).OrderByDescending(x => x.Date).Take(PostsPerPage).ToList();
        else
            // we're on a new page. Skip however many rows we've already seen
            Posts = Db.Posts.Include(x => x.User).Where( x=> x.ThreadId == id).OrderByDescending(x => x.Date).Take(PostsPerPage).Skip(PostsPerPage * page).ToList();

        // create and return the view model
        ThreadPostsViewModel Model = new ThreadPostsViewModel
        {
            Thread = Thread,
            Posts = Posts,
            Pages = Posts.Count / PostsPerPage
        };

        return View(Model);
    }
}

风景

@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
八码

在控制器中放置当前页面的值:

ViewBag.currentPage = page;

鉴于您可以执行以下操作(未测试):

<div class="paging">
@if (Model.Pages > 11 && ViewBag.currentPage > 6)
{
        for (int i = ViewBag.currentPage - 6; i < ViewBag.currentPage -1; i++)
        {
          string Url = String.Format("/View/Thread/{0}?page={1}", Model.Thread.Id, i);
          <a href="@Url">@i</a>
        }
        for (int i = ViewBag.currentPage + 1; i < ViewBag.currentPage + 6; i++)
        {
          string Url = String.Format("/View/Thread/{0}?page={1}", Model.Thread.Id, i);
          <a href="@Url">@i</a>
        }
}
else
{
        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>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带有.NET MVC捆绑最小化错误的AngularJS

来自分类Dev

分页在ASP.NET MVC 5中无法正常工作

来自分类Dev

在ASP.net MVC中实现分页时出现的问题

来自分类Dev

在ASP.NET捆绑和最小化中将Styles Urls转换为CDN Urls

来自分类Dev

在没有MVC的ASP.NET中与Razor的相对链接

来自分类Dev

如何在asp.net MVC中创建Ajax链接?

来自分类Dev

链接到MVC 5 ASP.NET中的文件

来自分类Dev

渲染链接包含ASP.net MVC Razor中的跨度?

来自分类Dev

如何修复asp net mvc中图片的链接

来自分类Dev

最小化指数平滑中的alpha

来自分类Dev

最小化cvxpy中的日志功能

来自分类Dev

如何最小化UI中的操作

来自分类Dev

最小化LWJGL中的显示

来自分类Dev

如何最小化jQuery中的代码

来自分类Dev

Android中的活动最小化

来自分类Dev

解决cvxpy中的最小化问题

来自分类Dev

Python中的DFA最小化器

来自分类Dev

最小化Matlab中的功能

来自分类Dev

最小化gme中的AI使用

来自分类Dev

删除Xfce中的最小化(?)按钮

来自分类Dev

F#中的DFA最小化

来自分类Dev

最小化pytorch中的角度

来自分类Dev

删除或最小化图像中的重叠

来自分类Dev

VB.Net程序最小化无法正常工作

来自分类Dev

最小化运行VB.net程序

来自分类Dev

如何从ASP.NET MVC的多个分页中获取所有选中的复选框?

来自分类Dev

在ASP.NET MVC中的Ajax视图上分页,排序,搜索

来自分类Dev

在ASP.NET MVC 5的部分页面中呈现<List>数据

来自分类Dev

ASP.NET MVC中的分页而不使用任何外部nuget包