我正在使用以下包在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
但我很难做到这一点,只能将页码放到网址中。
有人可以帮忙吗?我原本以为这将是一个常见且有用的功能。
由于
答案 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;
},
如果有人有更好的解决方案,请编辑此帖子。