Fork me on GitHub

MvcPager 分页示例 — Javascript API操作AjaxPager

本示例演示如何使用客户端Javascript API的goToPage方法来使AjaxPager跳转到指定页。

使用Javascript API操作MvcPager时,必须用Html.RegisterMvcPagerScriptResource()注册MvcPager的客户端脚本库。

goToPage方法在跳转前会对传入的页索引参数进行有效性验证,如果传入的页索引不是有效的数值或页索引超出范围(小于0或大于总页数),则会触发PagerOptions.OnPageIndexError属性指定的Javascript函数。可以在本示例中输入进行测试查看效果。

转到第
序号 文章标题 作者 文章来源
11 吴起县统筹引领县域经济向纵深发展迈进 Webdiyer 吴起政府网
12 吴起县巩固全国文明县城成果纪实 Webdiyer 吴起政府网
13 吴起县举办200余场陕北说书 Webdiyer 吴起政府网
14 电影《山丹丹花儿开》在陕西省吴起县开拍 Webdiyer 吴起政府网
15 吴起热线—吴起人自己的地方门户网站 Webdiyer 吴起热线

View:

        
@model PagedList<article>
<div class="well well-sm">
        <div class="input-group" style="width:35%">
        <span class="input-group-addon">转到第</span>
        <input type="text" id="pagebox" class="form-control input-sm" />
        <span class="input-group-addon">页</span>
        <span class="input-group-btn"><button class="btn btn-primary btn-sm" id="goBtn">跳转</button></span>
    </div>
</div>
        <div id="articles">
        @Html.Partial("_ArticleList", Model)
    </div>
@section Scripts{@{Html.RegisterMvcPagerScriptResource();}
        <script type="text/javascript">
    $(function () {
        $("#goBtn").click(function () {
            var pager = Webdiyer.MvcPagers[0];
            if (pager != null) {
                pager.goToPage($("#pagebox").val());
            } else { alert("找不到指定的MvcPager!"); }
        });
    });
    </script>
}

_ArticleList.cshtml:

@model PagedList<article>
           
<div class="text-center">
    @Ajax.Pager(Model, new PagerOptions { PageIndexParameterName = "id", ContainerTagName = "ul", CssClass = "pagination", CurrentPagerItemTemplate = "<li class=\"active\"><a href=\"#\">{0}</a></li>", DisabledPagerItemTemplate = "<li class=\"disabled\"><a>{0}</a></li>", PagerItemTemplate = "<li>{0}</li>" }).AjaxOptions(a => a.SetUpdateTargetId("articles"))
</div>
@{ Html.RenderPartial("_ArticleTable"); }
<div class="text-center">
    @Ajax.Pager(Model, new PagerOptions { PageIndexParameterName = "id", ContainerTagName = "ul", CssClass = "pagination", CurrentPagerItemTemplate = "<li class=\"active\"><a href=\"#\">{0}</a></li>", DisabledPagerItemTemplate = "<li class=\"disabled\"><a>{0}</a></li>", PagerItemTemplate = "<li>{0}</li>" }).AjaxOptions(a => a.SetUpdateTargetId("articles"))
</div>

_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 JavascriptApiAjax(int id = 1)
        {
            using (var db = new DataContext())
            {
                var model = db.Articles.OrderByDescending(a => a.PubDate).ToPagedList(id, 5);
                if (Request.IsAjaxRequest())
                    return PartialView("_ArticleList", model);
                return View(model);
            }
        }