Atrybuty pomocnicze

HI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1863
0

Witam.

Stawiam swoje pierwsze kroczki w asp .net core mvc, przerabiając książkę
ASP.NET Core MVC 2. Zaawansowane programowanie. Wydanie VII

Doszedłem do rozdziału w którym użyte są atrybuty pomocnicze i nie mam pojęcia jak one działają ;).

Mowa o tym rozdziale:
screenshot-20200616150533.png

Kod po przepisaniu:

Kopiuj
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Mvc.Routing;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.AspNetCore.Razor.TagHelpers;
using SportsStore.Models.ViewModels;

namespace SportsStore.Infrastructure
{
    [HtmlTargetElement("div", Attributes = "page-model")]
    public class PageLinkTagHelper : TagHelper
    {
        private IUrlHelperFactory urlHelperFactory;
        public PageLinkTagHelper(IUrlHelperFactory helperFactory)
        {
            urlHelperFactory = helperFactory;
        }

        [ViewContext]
        [HtmlAttributeNotBound]
        public ViewContext ViewContext { get; set; }
        public PagingInfo PageModel { get; set; }
        public string PageAction { get; set; }
        public bool PageClassesEnabled { get; set; } = false;
        public string PageClass { get; set; }
        public string PageClassNormal { get; set; }
        public string PageClassSelected { get; set; }

        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            IUrlHelper urlHelper = urlHelperFactory.GetUrlHelper(ViewContext);
            TagBuilder result = new TagBuilder("div");
            for (int i = 1; i <= PageModel.TotalPages; i++)
            {
                TagBuilder tag = new TagBuilder("a");
                tag.Attributes["href"] = urlHelper.Action(PageAction, new { productPage = i });
                if (PageClassesEnabled)
                {
                    tag.AddCssClass(PageClass);
                    tag.AddCssClass(i == PageModel.CurrentPage ? PageClassSelected : PageClassNormal);
                }
                tag.InnerHtml.Append(i.ToString());
                result.InnerHtml.AppendHtml(tag);
            }
            output.Content.AppendHtml(result.InnerHtml);
        }
    }
}

(korzystam z polskiej wersji książki - kod troszkę się różni, ale kluczowy element jest zachowany)

Zupełnie nie rozumiem co i kiedy przypisuje wartość do zmiennych:
PageClass
PageClassNormal
PageClassSelected

VS pokazuje mi 2 referencje do tych obiektów, ale w "wklikaniu" się jest tylko jedna.

screenshot-20200616151557.png

Podsumowując:
skąd bierze się wartość wymienionych zmiennych ?

Z góry dziękuję za pomoc

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
2
hipekk napisał(a):

Podsumowując:
skąd bierze się wartość wymienionych zmiennych ?

Będę strzelał - z tego, co programista wpisze do tagów?

HI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1863
0

Możesz rozwinąć myśl?
Jakie tagi masz na myśli?

Wyszukałem ciąg PageClassSelected i też nie znalazło nic co wskazywałoby na przypisanie wartości
screenshot-20200616180354.png

a wartość jest:
screenshot-20200616180705.png

Kokoniłaj
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 190
1

Tak jak Somekind napisał. W widoku szukaj elementu div z atrybutami page-model, page-class-selected, page-class-normal.

https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/th-components?view=aspnetcore-3.1

Polecam również korzystanie z oficjalnych materiałów. Uważaj bo teraz już jest net.core 3.1, a książka z której się uczysz traktuje o asp.net 2. Z rozdziałami o kontrolerach, widokach, tag helperach nie powinno być problemu. Jeżeli chodzi o ef core to radzę uczyć się z innego źródła. Najlepiej z oficjalnej dokumentacji.

https://docs.microsoft.com/en-us/ef/core/what-is-new/

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.