Pomocná rutina značek komponent v ASP.NET Core
Pomocník značky komponenty vykresluje Razor součást v Razor zobrazení Stránky nebo MVC.
Požadavky
Postupujte podle pokynů v části Použití nesměrovatelných komponent na stránkách nebo zobrazeních součástí integrace ASP.NET Core Razor do článku o aplikacích ASP.NET Core.
Postupujte podle pokynů v části Konfigurace pro:
- Blazor Server: Integrujte směrovatelné a nesměrovatelné Razor komponenty do Razor aplikací Pages a MVC.
- Blazor WebAssembly: Integrace Razor komponent z hostovaného Blazor WebAssembly řešení do Razor aplikací Pages a MVC.
Postupujte podle pokynů v části Konfigurace prerenderu a integrujte ASP.NET základní Razor součásti.
Pomocná rutina značky komponenty
Pokud chcete vykreslit komponentu ze stránky nebo zobrazení, použijte pomocnou rutinu značky komponenty (<component>
značku).
Poznámka
Razor Integrace komponent do Razor aplikací Pages a MVC v hostované Blazor WebAssembly aplikaci se podporuje v ASP.NET Core v .NET 5.0 nebo novějším.
RenderMode nakonfiguruje, jestli komponenta:
- Je předem vytáhlý na stránku.
- Je vykreslen jako statický kód HTML na stránce nebo pokud obsahuje potřebné informace ke spuštění Blazor aplikace z uživatelského agenta.
Blazor WebAssembly Režimy vykreslování aplikací jsou uvedené v následující tabulce.
Režim vykreslení | Popis |
---|---|
WebAssembly |
Vykreslí značku aplikace tak Blazor WebAssembly , aby zahrnovala interaktivní komponentu při načítání v prohlížeči. Komponenta není předem vytyčována. Tato možnost usnadňuje vykreslení různých Blazor WebAssembly součástí na různých stránkách. |
WebAssemblyPrerendered |
Prerenders the component into static HTML and includes a marker for a app for Blazor WebAssembly later use to make the component interactive when loaded in the browser. |
Režimy vykreslování se zobrazují v následující tabulce.
Režim vykreslení | Popis |
---|---|
ServerPrerendered | Vykreslí komponentu do statického KÓDU HTML a obsahuje značku pro aplikaci na straně Blazor serveru. Při spuštění uživatelského agenta se tato značka použije ke spuštění Blazor aplikace. |
Server | Vykreslí značku pro aplikaci na straně Blazor serveru. Výstup ze komponenty není zahrnutý. Při spuštění uživatelského agenta se tato značka použije ke spuštění Blazor aplikace. |
Static | Vykreslí komponentu do statického HTML. |
Režimy vykreslování aplikací se zobrazují v následující tabulce.
Režim vykreslení | Popis |
---|---|
ServerPrerendered | Vykreslí komponentu do statického KÓDU HTML a obsahuje značku pro aplikaci na straně Blazor serveru. Při spuštění uživatelského agenta se tato značka použije ke spuštění Blazor aplikace. |
Server | Vykreslí značku pro aplikaci na straně Blazor serveru. Výstup ze komponenty není zahrnutý. Při spuštění uživatelského agenta se tato značka použije ke spuštění Blazor aplikace. |
Static | Vykreslí komponentu do statického HTML. |
Mezi další charakteristiky patří:
- Je povoleno více pomocných rutin značek součástí, které vykreslují více Razor komponent.
- Po spuštění aplikace nelze dynamicky vykreslit komponenty.
- I když stránky a zobrazení můžou používat komponenty, není naopak pravda. Komponenty nemůžou používat funkce specifické pro zobrazení a stránky, jako jsou částečná zobrazení a oddíly. Pokud chcete použít logiku z částečného zobrazení v komponentě, zohledníte logiku částečného zobrazení do komponenty.
- Vykreslování součástí serveru ze statické stránky HTML se nepodporuje.
Následující pomocník značky komponenty vykreslí EmbeddedCounter
komponentu na stránce nebo zobrazení v aplikaci na straně Blazor serveru pomocí ServerPrerendered
:
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@using {APP ASSEMBLY}.Components
...
<component type="typeof(EmbeddedCounter)" render-mode="ServerPrerendered" />
Předchozí příklad předpokládá, že EmbeddedCounter
komponenta je ve složce aplikace Components
. Zástupný symbol {APP ASSEMBLY}
je název sestavení aplikace (například @using BlazorSample.Components
).
Pomocná rutina značky komponenty může také předávat parametry komponentám. Zvažte následující ColorfulCheckbox
komponentu, která nastavuje barvu a velikost popisku zaškrtávacího políčka.
Components/ColorfulCheckbox.razor
:
<label style="font-size:@(Size)px;color:@Color">
<input @bind="Value"
id="survey"
name="blazor"
type="checkbox" />
Enjoying Blazor?
</label>
@code {
[Parameter]
public bool Value { get; set; }
[Parameter]
public int Size { get; set; } = 8;
[Parameter]
public string? Color { get; set; }
protected override void OnInitialized()
{
Size += 10;
}
}
Parametry Size
komponenty (int
) a Color
(string
) lze nastavit pomocným pomocníkem značky komponenty:
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@using {APP ASSEMBLY}.Components
...
<component type="typeof(ColorfulCheckbox)" render-mode="ServerPrerendered"
param-Size="14" param-Color="@("blue")" />
Předchozí příklad předpokládá, že komponenta ColorfulCheckbox
je ve Components
složce. Zástupný symbol {APP ASSEMBLY}
je název sestavení aplikace (například @using BlazorSample.Components
).
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@using {APP ASSEMBLY}.Shared
...
<component type="typeof(EmbeddedCounter)" render-mode="ServerPrerendered" />
Předchozí příklad předpokládá, že EmbeddedCounter
komponenta je ve složce aplikace Shared
. Zástupný symbol {APP ASSEMBLY}
je název sestavení aplikace (například @using BlazorSample.Shared
v @using BlazorSample.Client.Shared
hostovaném Blazor řešení).
Pomocná rutina značky komponenty může také předávat parametry komponentám. Zvažte následující ColorfulCheckbox
komponentu, která nastavuje barvu a velikost popisku zaškrtávacího políčka.
Shared/ColorfulCheckbox.razor
:
<label style="font-size:@(Size)px;color:@Color">
<input @bind="Value"
id="survey"
name="blazor"
type="checkbox" />
Enjoying Blazor?
</label>
@code {
[Parameter]
public bool Value { get; set; }
[Parameter]
public int Size { get; set; } = 8;
[Parameter]
public string? Color { get; set; }
protected override void OnInitialized()
{
Size += 10;
}
}
Parametry Size
komponenty (int
) a Color
(string
) lze nastavit pomocným pomocníkem značky komponenty:
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@using {APP ASSEMBLY}.Shared
...
<component type="typeof(ColorfulCheckbox)" render-mode="ServerPrerendered"
param-Size="14" param-Color="@("blue")" />
Předchozí příklad předpokládá, že komponenta ColorfulCheckbox
je ve Shared
složce. Zástupný symbol {APP ASSEMBLY}
je název sestavení aplikace (například @using BlazorSample.Shared
).
Následující kód HTML se vykreslí na stránce nebo zobrazení:
<label style="font-size:24px;color:blue">
<input id="survey" name="blazor" type="checkbox">
Enjoying Blazor?
</label>
Předání řetězce v uvozování vyžaduje explicitní Razor výraz, jak je znázorněno param-Color
v předchozím příkladu. Chování Razor analýzy hodnoty string
typu se nevztahuje na param-*
atribut, protože atribut je object
typ.
Podporují se všechny typy parametrů s výjimkou:
- Obecné parametry.
- Parametry, které nejsou serializovatelné.
- Dědičnost v parametrech kolekce
- Parametry, jejichž typ je definován mimo Blazor WebAssembly aplikaci nebo v lazily načteném sestavení.
- Pro příjem delegáta
RenderFragment
pro podřízený obsah (napříkladparam-ChildContent="..."
). V tomto scénáři doporučujeme vytvořit komponentu (.razor
), která odkazuje na komponentuRazor, kterou chcete vykreslit s podřízeným obsahem, který chcete předat, a poté vyvolat Razor komponentu ze stránky nebo zobrazení pomocí pomocné rutiny značky komponenty.
Typ parametru musí být JSON serializovatelný, což obvykle znamená, že typ musí mít výchozí konstruktor a nastavitelné vlastnosti. Můžete například zadat hodnotu pro Size
a Color
v předchozím příkladu, protože typy Size
a Color
jsou primitivní typy (int
a string
), které jsou podporovány serializátorem JSON.
V následujícím příkladu se do komponenty předá objekt třídy:
MyClass.cs
:
public class MyClass
{
public MyClass()
{
}
public int MyInt { get; set; } = 999;
public string MyString { get; set; } = "Initial value";
}
Třída musí mít veřejný konstruktor bez parametrů.
Components/ParameterComponent.razor
:
<h2>ParameterComponent</h2>
<p>Int: @MyObject?.MyInt</p>
<p>String: @MyObject?.MyString</p>
@code
{
[Parameter]
public MyClass? MyObject { get; set; }
}
Pages/MyPage.cshtml
:
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@using {APP ASSEMBLY}
@using {APP ASSEMBLY}.Components
...
@{
var myObject = new MyClass();
myObject.MyInt = 7;
myObject.MyString = "Set by MyPage";
}
<component type="typeof(ParameterComponent)" render-mode="ServerPrerendered"
param-MyObject="@myObject" />
Předchozí příklad předpokládá, že ParameterComponent
komponenta je ve složce aplikace Components
. Zástupný symbol {APP ASSEMBLY}
je název sestavení aplikace (například @using BlazorSample
a @using BlazorSample.Components
). MyClass
je v oboru názvů aplikace.
Shared/ParameterComponent.razor
:
<h2>ParameterComponent</h2>
<p>Int: @MyObject?.MyInt</p>
<p>String: @MyObject?.MyString</p>
@code
{
[Parameter]
public MyClass? MyObject { get; set; }
}
Pages/MyPage.cshtml
:
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@using {APP ASSEMBLY}
@using {APP ASSEMBLY}.Shared
...
@{
var myObject = new MyClass();
myObject.MyInt = 7;
myObject.MyString = "Set by MyPage";
}
<component type="typeof(ParameterComponent)" render-mode="ServerPrerendered"
param-MyObject="@myObject" />
Předchozí příklad předpokládá, že ParameterComponent
komponenta je ve složce aplikace Shared
. Zástupný symbol {APP ASSEMBLY}
je název sestavení aplikace (například @using BlazorSample
a @using BlazorSample.Shared
). MyClass
je v oboru názvů aplikace.
Další prostředky
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro