asp.net-core - 如何为字母分页编写标签助手
问题描述
我遇到了以下文章https://www.mikesdotnetting.com/article/256/entity-framework-recipe-alphabetical-paging-in-asp-net-mvc,描述了如何从数据而不是字母表生成分页链接在 asp.net 应用程序中。此处显示的解决方案基于 html 助手。如何使用标签助手来实现此功能?我正在使用 asp.net 核心 1.1。
我参考的代码是:
public static class HtmlHelpers
{
public static HtmlString AlphabeticalPager(this HtmlHelper html, string selectedLetter, IEnumerable<string> firstLetters, Func<string, string> pageLink)
{
var sb = new StringBuilder();
var numbers = Enumerable.Range(0, 10).Select(i => i.ToString());
var alphabet = Enumerable.Range(65, 26).Select(i => ((char)i).ToString()).ToList();
alphabet.Insert(0, "All");
alphabet.Insert(1, "0-9");
var ul = new TagBuilder("ul");
ul.AddCssClass("pagination");
ul.AddCssClass("alpha");
foreach (var letter in alphabet)
{
var li = new TagBuilder("li");
if (firstLetters.Contains(letter) || (firstLetters.Intersect(numbers).Any() && letter == "0-9") || letter == "All")
{
if (selectedLetter == letter || selectedLetter.IsEmpty() && letter == "All")
{
li.AddCssClass("active");
var span = new TagBuilder("span");
span.SetInnerText(letter);
li.InnerHtml = span.ToString();
}
else
{
var a = new TagBuilder("a");
a.MergeAttribute("href", pageLink(letter));
a.InnerHtml = letter;
li.InnerHtml = a.ToString();
}
}
else
{
li.AddCssClass("inactive");
var span = new TagBuilder("span");
span.SetInnerText(letter);
li.InnerHtml = span.ToString();
}
sb.Append(li.ToString());
}
ul.InnerHtml = sb.ToString();
return new HtmlString(ul.ToString());
}
}
知道如何进行吗?
解决方案
推荐阅读
- android - React Native 运行没有错误不会在设备上启动?
- javascript - 在没有 Jquery 的情况下对 mouseEnter 和 mouseLeave 做出反应停止/开始淡出
- linux - 从 Linux 服务器向 Google Cloud Platform 进行身份验证
- mysql - 如何在 mySQL 中查找最常见的字符串
- javascript - 为什么我的 div 没有更新它们的背景颜色?
- node.js - 在 lambdas/箭头函数中抛出没有大括号的错误
- python - 熊猫查询没有返回正确的DataFrame Python
- android - Socket/DataOutputStream/DataInputStream 可以打包吗?
- c++ - 使用 Rcpp 模块向 R 公开简单的 C++ Student 类
- python - argparse and custom Actions - code path not obvious