PagedListPager自定义分页链接

时间:2013-11-18 02:54:46

标签: asp.net asp.net-mvc asp.net-mvc-3 nuget nuget-package

我正在使用以下包在ASP.NET MVC中进行分页

https://github.com/TroyGoode/PagedList

这很好,但是我希望能够为寻呼机链接添加额外的HTML5数据属性。只需包含链接的页码。

例如:

<a href="admin/demo/userlist" data-page-no="1">1</a> <a href="admin/demo/userlist" data-page-no="2">2</a> etc etc

但我很难做到这一点,只能将页码放到网址中。

有人可以帮忙吗?我原本以为这将是一个常见且有用的功能。

由于

3 个答案:

答案 0 :(得分:9)

在Troy的帮助下排序,现在完美无缺:)

@Html.PagedListPager(Model, page => "admin/demo/userlist", new PagedListRenderOptions { FunctionToTransformEachPageLink = (liTag, aTag) => { aTag.Attributes.Add("data-page-no", aTag.InnerHtml); liTag.InnerHtml = aTag.ToString(); return liTag; } })

答案 1 :(得分:2)

短期截止日期。我尝试了类似的东西,但如果超链接的内部HTML是一个椭圆或其他特殊字符,它就不能正常工作。

               FunctionToTransformEachPageLink = (li, a) =>
               {
                   if (a.Attributes.ContainsKey("href"))
                   {
                       Uri uri;
                       if (Uri.TryCreate("http://temp.org/" + a.Attributes["href"], UriKind.Absolute, out uri))
                       {
                           var qs = uri.Query;
                           if (!string.IsNullOrWhiteSpace(qs))
                           {
                               var nvc = HttpUtility.ParseQueryString(qs);
                               var page = nvc["page"];
                               a.MergeAttribute("data-page", page);
                           }
                       }
                   }
                   else
                   {
                       int page;
                       if (int.TryParse(a.InnerHtml, out page))
                           a.MergeAttribute("data-page", page.ToString());
                   }

                   li.InnerHtml = a.ToString();
                   return li;
               }

“FunctionToTransformEachPageLink”应包含当前页面作为委托参数。

答案 2 :(得分:0)

使用“最新”8.0.7 nuget X.PagedListMvc.Core FunctionToTransformEachPageLink 委托在传递返回值时添加和附加元素。因此,如果您返回 liTag 页码链接将加倍。工作代码如下,只返回一个空的标签构建器:

FunctionToTransformEachPageLink = (TagBuilder liTag, TagBuilder aTag) =>
        {
            var ret = new TagBuilder("text");

            aTag.Attributes.Add("data-otf-target", "#page-wrapper");

            liTag.InnerHtml.AppendHtml(aTag);

            return ret;
        },

如果有人有更好的解决方案,请编辑此帖子。