Fork me on GitHub

MvcPager 分页示例 — 自定义路由

该示例演示如何为MvcPager应用自定义路由。

本示例使用了三个MvcPager,分别使用三个不同的路由MvcPager_Pager1、MvcPager_Pager2和MvcPager_Pager3,因此每个MvcPager的分页Url链接也不相同,请分别点击三个MvcPager中的分页链接,注意查看浏览器地址栏中的Url变化。

注:此示例中三个MvcPager均设置了PagerOptions.FirstPageRouteName属性以启用首页Url SEO,因此三个MvcPager生成的首页url完全相同。

序号 文章标题 作者 文章来源
6 吴起:从一个“贫困县”到全国“百强县” Webdiyer 吴起热线
7 延安至吴起高速公路12月中旬通车 Webdiyer 吴起热线
8 吴起县入选2013中国中小城市百强县市 Webdiyer 吴起热线
9 吴起县退耕村民生产生活方式改变 Webdiyer 吴起热线
10 吴起:退耕还林让黄土山峁再披绿装 Webdiyer 吴起政府网
使用路由MvcPager_Pager1,Url格式:{controller}/{action}/page_{pageindex}
首页 上页 1 2 3 4 5 6 7 8 9 10 ... 下页 尾页 

使用路由MvcPager_Pager2,Url格式:{controller}/{action}/pageindex-{pageindex}
首页 上页 1 2 3 4 5 6 7 8 9 10 ... 下页 尾页 

使用路由MvcPager_Pager3,Url格式:{controller}/{action}/p-{pageindex}
首页 上页 1 2 3 4 5 6 7 8 9 10 ... 下页 尾页 

View:

@model PagedList<article>
@Html.Partial("_ArticleTable", Model)
<h5>使用路由MvcPager_Pager1,Url格式:{controller}/{action}/page_{pageindex}</h5>
    @Html.Pager(Model).Options(o => o.SetFirstPageRouteName("MvcPager_Default").SetRouteName("MvcPager_Pager1").SetPagerItemTemplate("{0}&nbsp;"))
<hr />
<h5>使用路由MvcPager_Pager2,Url格式:{controller}/{action}/pageindex-{pageindex}</h5>
@Html.Pager(Model).Options(o => o.SetFirstPageRouteName("MvcPager_Default").SetRouteName("MvcPager_Pager2").SetPagerItemTemplate("{0}&nbsp;"))
<hr />
<h5>使用路由MvcPager_Pager3,Url格式:{controller}/{action}/p-{pageindex}</h5>
@Html.Pager(Model).Options(o => o.SetRouteName("MvcPager_Pager3").SetFirstPageRouteName("MvcPager_Default").SetPagerItemTemplate("{0}&nbsp;"))

_ArticleTable.cshtml:

@model PagedList<Article>
<table class="table table-bordered table-striped">
    <tr>
        <th class="nowrap">序号</th>
        <th>
            @Html.DisplayNameFor(model => model.Title)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.PubDate)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Author)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Source)
        </th>
    </tr>
    @{ int i = 0;}
    @foreach (var item in Model)
    {
        <tr>
            <td>@(Model.StartItemIndex + i++)</td>
            <td>
                @Html.DisplayFor(modelItem => item.Title)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.PubDate)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Author)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Source)
            </td>
        </tr>
    }
</table>

Model:

    public class Article
    {
        [Display(Name="文章编号")]
        public int ID { get; set; }
        [Display(Name="文章标题")]
        [MaxLength(200)]
        public string Title { get; set; }
        [Display(Name = "文章内容")]
        public string Content { get; set; }
        [Display(Name = "发布日期")]
        public DateTime PubDate { get; set; }
        [Display(Name = "作者")]
        [MaxLength(20)]
        public string Author { get; set; }
        [Display(Name = "文章来源")]
        [MaxLength(20)]
        public string Source { get; set; }
    }

Controller:

             
        public ActionResult CustomRouting(int pageindex = 1)
        {
            using (var db = new DataContext())
            {
                return View(db.Articles.OrderByDescending(a => a.PubDate).ToPagedList(pageindex, 5));
            }
        }