Asp.net mvc 5 PagedList.Mvc省略号按钮不起作用

Asp.net mvc 5 PagedList.Mvc省略号按钮不起作用,asp.net-mvc-5,pagedlist,Asp.net Mvc 5,Pagedlist,我在MVC5应用程序中使用PagedList.Mvc进行分页 问题:省略号按钮位于下面屏幕截图的第10页之后,单击该按钮时不会执行任何操作。是这样的吗?或者我可以让省略号按钮工作,这样点击它就会显示下一组页面 视图中用于显示此寻呼机的html帮助程序如下所示 @Html.PagedListPager(Model, page => Url.Action("Index", new { page, sortOrder = ViewBag.CurrentSort, SearchText =

我在MVC5应用程序中使用PagedList.Mvc进行分页

问题:省略号按钮位于下面屏幕截图的第10页之后,单击该按钮时不会执行任何操作。是这样的吗?或者我可以让省略号按钮工作,这样点击它就会显示下一组页面

视图中用于显示此寻呼机的html帮助程序如下所示

@Html.PagedListPager(Model, page => Url.Action("Index", 
 new { page, sortOrder = ViewBag.CurrentSort, SearchText = ViewBag.SearchText }))

有效的解决方案是隐藏省略号按钮

解决方案

此解决方案涉及隐藏省略号按钮。为此,您需要确保在
PagedListRenderations
类下未显示所有页码时,
DisplayEllipses的属性设置为false,因为默认情况下为true。正是此设置使寻呼机显示省略号按钮

下面给出的代码片段将进入您的视图或PartialView html,您将需要更改一些自定义参数,如sortOrder和action name等

当寻呼机未对齐时隐藏省略号按钮

@Html.PagedListPager(Model,
 page => Url.Action("GetOrderDetails", new { page, sortOrder = ViewBag.CurrentSort,
 , command = "paging", PageSize = ViewBag.PageSize }), 
 PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing( 
 new PagedListRenderOptions { DisplayEllipsesWhenNotShowingAllPageNumbers = false},
 new AjaxOptions() { HttpMethod = "POST", UpdateTargetId = "gridTable",
 OnBegin = "OnBegin", OnSuccess = "OnSuccess" }))
@Html.PagedListPager(Model, page => Url.Action("Index", new { page, 
sortOrder = ViewBag.CurrentSort, command = "paging", PageSize = ViewBag.PageSize}),
new PagedListRenderOptions { DisplayEllipsesWhenNotShowingAllPageNumbers = false })
当寻呼机未轴化时隐藏省略号按钮

@Html.PagedListPager(Model,
 page => Url.Action("GetOrderDetails", new { page, sortOrder = ViewBag.CurrentSort,
 , command = "paging", PageSize = ViewBag.PageSize }), 
 PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing( 
 new PagedListRenderOptions { DisplayEllipsesWhenNotShowingAllPageNumbers = false},
 new AjaxOptions() { HttpMethod = "POST", UpdateTargetId = "gridTable",
 OnBegin = "OnBegin", OnSuccess = "OnSuccess" }))
@Html.PagedListPager(Model, page => Url.Action("Index", new { page, 
sortOrder = ViewBag.CurrentSort, command = "paging", PageSize = ViewBag.PageSize}),
new PagedListRenderOptions { DisplayEllipsesWhenNotShowingAllPageNumbers = false })
另一种解决方案

从位于的GitHub下载源代码,并在Visual Studio中打开解决方案

在HtmlHelper.cs类中添加以下2个方法

private static TagBuilder PreviousEllipsis(IPagedList list, Func<int, string> generatePageUrl, PagedListRenderOptions options, int firstPageToDisplay)
    {
        var targetPageNumber = firstPageToDisplay - 1;//list.PageNumber - 1;
        var previous = new TagBuilder("a")
        {
            InnerHtml = string.Format(options.EllipsesFormat, targetPageNumber)
        };
        previous.Attributes["rel"] = "prev";

        if (!list.HasPreviousPage)
            return WrapInListItem(previous, options, "PagedList-skipToPrevious","disabled");

        previous.Attributes["href"] = generatePageUrl(targetPageNumber);
        return WrapInListItem(previous, options, "PagedList-skipToPrevious");
    }
    private static TagBuilder NextEllipsis(IPagedList list, Func<int, string> generatePageUrl, PagedListRenderOptions options, int lastPageToDisplay)
    {
        var targetPageNumber = lastPageToDisplay + 1;// list.PageNumber  +1;
        var next = new TagBuilder("a")
        {
            InnerHtml = string.Format(options.EllipsesFormat, targetPageNumber)
        };
        next.Attributes["rel"] = "next";

        if (!list.HasNextPage)
            return   WrapInListItem(next, options, "PagedList-skipToNext", "disabled");

        next.Attributes["href"] = generatePageUrl(targetPageNumber);
        return WrapInListItem(next, options, "PagedList-skipToNext");
    }

然后,重新生成代码并通过DLL复制到bin文件夹。在此之后,您将发现省略号按钮已启用,并将带您进入当前页码集第一页之前的页面,或当前页码集之后的页面。我对此进行了测试,效果良好。

使用您的代码禁用非ajaxified页面的“…”按钮。效果很好。谢谢,太好了。我很高兴我的代码有帮助。第二个解决方案将始终显示省略号按钮,但省略号按钮将始终显示下一个或上一个x记录,并且不会被禁用。