Как написать тэг-хелпер для алфавитного пейджинга - PullRequest
0 голосов
/ 30 апреля 2019

Я наткнулся на следующую статью 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());
    }
}

Есть идеи, как поступить?

...