oddíly ASP.NET Core Blazor
Poznámka:
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete v tomto článku ve verzi .NET 9.
Důležité
Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Aktuální verzi najdete v tomto článku ve verzi .NET 9.
Tento článek vysvětluje, jak řídit obsah komponenty Razor z podřízené Razor komponenty.
Blazor sekce
Pokud chcete řídit obsah komponenty Razor z podřízené Razor komponenty, Blazor podporuje oddíly pomocí následujících předdefinovaných komponent:
SectionOutlet: Vykreslí obsah poskytovaný komponentami SectionContent s odpovídajícími SectionName argumenty nebo SectionId argumenty. Dvě nebo více SectionOutlet součástí nemůže mít stejnou SectionName nebo SectionId.
SectionContent: Poskytuje obsah jako RenderFragment SectionOutlet součásti s odpovídajícími SectionName nebo SectionId. Pokud má několik SectionContent komponent stejné SectionName nebo SectionId, odpovídající SectionOutlet komponenta vykreslí obsah posledního vykreslení SectionContent.
Oddíly lze použít v rozloženích i ve vnořených komponentách nadřazeného-podřízeného objektu.
I když argument předaný SectionName může používat jakýkoli typ pouzdra, dokumentace přijímá kebab casing (například top-bar
), což je běžná volba pro ID elementů HTML. SectionId obdrží statické object
pole a pro názvy polí jazyka C# vždy doporučujeme písmena Pascal (například TopbarSection
).
V následujícím příkladu implementuje hlavní komponenta rozložení aplikace tlačítko čítače přírůstku pro komponentu Counter
aplikace.
Pokud obor názvů pro oddíly není v _Imports.razor
souboru, přidejte ho:
@using Microsoft.AspNetCore.Components.Sections
V komponentě MainLayout
(MainLayout.razor
), umístěte komponentu SectionOutlet a předejte do parametru SectionName řetězec, který označuje název oddílu. Následující příklad používá název top-bar
oddílu:
<SectionOutlet SectionName="top-bar" />
V komponentě Counter
(Counter.razor
), vytvořte komponentu SectionContent a předejte odpovídající řetězec (top-bar
) jeho SectionName parametru:
<SectionContent SectionName="top-bar">
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
</SectionContent>
Counter
Při přístupu MainLayout
/counter
ke komponentě vykreslí komponenta tlačítko pro zvýšení počtu z Counter
komponenty, kde je komponenta SectionOutlet umístěna. Při přístupu k jakékoli jiné komponentě se tlačítko pro zvýšení počtu nevykreslí.
Místo použití pojmenovaného oddílu SectionId můžete předat statický object
s parametrem k identifikaci oddílu. Následující příklad také implementuje tlačítko čítače přírůstku pro komponentu aplikace Counter
v hlavním rozložení aplikace.
Pokud nechcete, aby se jiné SectionContent komponenty omylem shodovaly s názvem objektu SectionOutlet, předejte parametr objektu SectionId k identifikaci oddílu. To může být užitečné při návrhu Razor knihovny tříd (RCL). SectionOutlet Když v seznamu RCL použije odkaz na objekt s objektem SectionId a příjemce umístí komponentu SectionContent s odpovídajícím SectionId objektem, není náhodná shoda podle názvu možná, když příjemci seznamu RCL implementují další SectionContent komponenty.
Následující příklad také implementuje tlačítko čítače přírůstku pro komponentu aplikace v hlavním rozložení aplikace Counter
pomocí odkazu na objekt místo názvu oddílu.
Přidejte statickou TopbarSection
object
komponentu MainLayout
@code
do bloku:
@code {
internal static object TopbarSection = new();
}
MainLayout
V kódu komponenty Razor umístěte komponentu SectionOutlet a předejte TopbarSection
parametruSectionId, který označuje oddíl:
<SectionOutlet SectionId="TopbarSection" />
Přidejte komponentu SectionContent do komponenty aplikace Counter
, která vykreslí tlačítko pro zvýšení počtu. Jako (MainLayout.TopbarSection
) použijte statickou SectionId object
část komponentyTopbarSection
.MainLayout
V Counter.razor
:
<SectionContent SectionId="MainLayout.TopbarSection">
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
</SectionContent>
Counter
Při přístupu MainLayout
ke komponentě se vykreslí tlačítko pro zvýšení počtu, ve kterém je komponenta SectionOutlet umístěná.
Poznámka:
SectionOutlet a SectionContent komponenty mohou nastavit pouze jednu SectionId nebo SectionName, nikoli obě.
Interakce oddílů s dalšími Blazor funkcemi
Oddíl komunikuje s dalšími Blazor funkcemi následujícími způsoby:
- Kaskádové hodnoty proudí do obsahu oddílu, ze kterého je obsah definován komponentou SectionContent .
- Neošetřené výjimky se zpracovávají pomocí hranic chyb definovaných kolem SectionContent komponenty.
- Komponenta Razor nakonfigurovaná pro vykreslování streamování také konfiguruje obsah oddílu poskytovaný komponentou SectionContent pro použití vykreslování streamování.