Wanneer een groot aantal pagina's hetzelfde weergaveresultaat oproept, kunnen we dezelfde inhoud inkapselen in een weergavecomponent, natuurlijk kunnen we ook parameters doorgeven aan de weergavecomponent en het responsresultaat teruggeven, scenario's: ranglijsten, formulieren, tabellen, enzovoort. Dit artikel gebruikt asp.net kern 3.1 om uit te leggen hoe je de ViewComponent weergavecomponenttutorial gebruikt.
Bekijk componenten
De View-component lijkt op een lokale view, maar is krachtiger. De viewcomponent gebruikt geen modelbindingen, maar vertrouwt alleen op de gegevens die worden verstrekt wanneer het model wordt aangeroepen. Dit artikel is geschreven met controllers en views, maar het view-gedeelte kan ook worden gebruikt met Razor Pages.
Bekijk componenten:
- Render blocks in plaats van de hele reactie.
- Omvat dezelfde scheiding van zorgen en testbaarheidsvoordelen als tussen controllers en views.
- Het kan parameters en bedrijfslogica bevatten.
- Meestal wordt ik aangeroepen vanaf de layoutpagina.
Viewcomponenten kunnen overal worden gebruikt waar je herbruikbare renderinglogica hebt die te complex is voor een lokale weergave, zoals:
- Dynamisch navigatiemenu
- Tag Cloud (waar de database wordt doorvraagd)
- Inlogpaneel
- Winkelwagentje
- Recent gepubliceerde artikelen
- Zijbalkinhoud op een typische blog
- Het inlogpaneel verschijnt op elke pagina met een link om uit te loggen of in te loggen, afhankelijk van de inlogstatus van de gebruiker
Gedeeltelijk beeld
In asp.net MVC 5 kunnen we een lokale weergave gebruiken met de volgende code:
Oproepmethode:
ViewComponent is een alternatief voor lokale views.
ViewComponent om te beginnen
Bekijk componentklasse:
- Constructorafhankelijkheidsinjectie wordt volledig ondersteund
- Niet betrokken bij de levenscyclus van de controller, wat betekent dat je geen filters kunt gebruiken in viewcomponenten
- Zonder verder oponthoud gaan we meteen naar het punt waarop we de componentfunctionaliteit van een stedelijke gebiedsclassificatie willen samenvatten.
Maak eerst een nieuwe "ViewComponents"-map aan onder de projectmap en maak een nieuw "RootClassification.cs"-klassebestand aan met de volgende code:
Op de view-pagina maken we een nieuwe "Components"-map aan onder de "/Views/Shared"-map van het project, vervolgens maken we een nieuwe "RootClassification"-map aan (dit is het object met de nieuwe componentklasse die we hebben gemaakt), en vervolgens maken we een nieuw "Default.cshtml"-bestand aan; de code is als volgt:
De structuur is als volgt:
Het gedetailleerde pad is: /Views/Shared/Components/RootClassification/Default.cshtml
Waarom zo'n pad bouwen? Dit heeft te maken met hoe het asp.net Core-component werkt.
De runtime zoekt naar de weergave via het volgende pad:
/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} De standaard weergavenaam voor de weergavecomponent is Default, wat betekent dat je weergavebestand meestal Default.cshtml zal heten. Bij het aanmaken van een weergavecomponentresultaat of het aanroepen van een View-methode kun je een andere weergavenaam opgeven.
Door aan te roepen, kunnen we aanroepen waar we de component moeten gebruiken, de code is als volgt:
Voer het project opnieuw uit met de volgende rendering:
|