首页 > 解决方案 > 如何为字母分页编写标签助手

问题描述

我遇到了以下文章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());
    }
}

知道如何进行吗?

标签: asp.net-coreasp.net-core-tag-helpers

解决方案


推荐阅读