Når et stort antal sider kalder det samme visningsresultat, kan vi indkapsle det samme indhold i en visningskomponent, selvfølgelig kan vi også sende parametre til visningskomponenten og returnere svarresultatet, scenarier: leaderboards, formularer, tabeller osv., denne artikel bruger asp.net kerne 3.1 til at forklare, hvordan man bruger ViewComponent view component tutorialen.
Se komponenter
View-komponenten ligner en lokal visning, men er mere kraftfuld. View-komponenten bruger ikke modelbindinger, men er kun afhængig af de data, der gives, når modellen kaldes. Denne artikel er skrevet ved brug af controllere og visninger, men visningskomponenten kan også bruges med Razor Pages.
Se komponenter:
- Render blokke i stedet for hele svaret.
- Inkluderer samme adskillelse af bekymringer og testbarhedsfordele som mellem controllere og synspunkter.
- Den kan have parametre og forretningslogik.
- Normalt kaldt fra layoutsiden.
View-komponenter kan bruges hvor som helst, hvor der er genanvendelig renderingslogik, der er for kompleks til en lokal visning, såsom:
- Dynamisk navigationsmenu
- Tag cloud (hvor databasen forespørges)
- Loginpanel
- Indkøbsvogn
- Nyligt udgivne artikler
- Indhold i sidebjælken på en typisk blog
- Loginpanelet vil vises på hver side med et link til at logge ud eller ind, afhængigt af brugerens loginstatus
Delvist overblik
I asp.net MVC 5 kan vi bruge en lokal visning med følgende kode:
Kaldemetode:
ViewComponent er et alternativ til lokale synspunkter.
ViewComponent for at komme i gang
Se komponentklasse:
- Konstruktørafhængighedsinjektion understøttes fuldt ud
- Ikke involveret i controllerens livscyklus, hvilket betyder, at du ikke kan bruge filtre i view-komponenterne
- Uden yderligere omsvøb, lad os gå direkte til det punkt, hvor vi ønsker at indkapsle komponentfunktionaliteten i en klassifikation af byområder.
Først opretter du en ny "ViewComponents"-mappe under projektmappen og opretter en ny "RootClassification.cs"-klassefil med følgende kode:
På visningssiden opretter vi en ny "Components"-mappe under "/Views/Shared"-mappen i projektet, derefter opretter vi en ny "RootClassification"-mappe (dette er objektet med den nye komponentklasse, vi har oprettet), og opretter derefter en ny "Default.cshtml"-fil, koden er som følger:
Strukturen er som følger:
Den detaljerede sti er: /Views/Shared/Components/RootClassification/Default.cshtml
Hvorfor bygge sådan en sti? Det har at gøre med, hvordan asp.net Core-komponenten fungerer.
Runtime-sekvensen søger efter visningen i følgende sti:
/Views/{Controller Name}/Components/{View Component Name}/{View Name}
/Views/Shared/Components/{View Component Name}/{View Name}
/Pages/Shared/Components/{View Component Name}/{View Name} Standardvisningsnavnet for visningskomponenten er Default, hvilket betyder, at din visningsfil normalt vil hedde Default.cshtml. Når du opretter et visningskomponentresultat eller kalder en View-metode, kan du angive et andet visningsnavn.
Ved at kalde kan vi kalde, hvor vi skal bruge komponenten, koden er som følger:
Kør projektet igen med følgende rendering:
|