如何编写用于按字母顺序分页的标记帮助器

时间:2019-04-30 15:09:03

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

我遇到了以下文章https://www.mikesdotnetting.com/article/256/entity-framework-recipe-alphabetical-paging-in-asp-net-mvc,该文章描述了如何从数据而不是asp.net应用程序中的字母生成分页链接。 此处显示的解决方案基于html帮助器。 如何使用标签助手来实现此功能? 我正在使用asp.net core 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());
    }
}

任何想法如何进行?

0 个答案:

没有答案