Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 10 tohoto článku.
Varování
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Aktuální vydání naleznete v článku pro verzi .NET 9.
Tento článek vysvětluje, jak používat formuláře v Blazor.
Vstupní komponenty a formuláře
Architektura Blazor podporuje formuláře a poskytuje integrované vstupní komponenty:
- Svázaný s objektem nebo modelem, který může používat datové poznámky.
- Formuláře HTML s elementem
<form>. - EditForm komponenty.
- Formuláře HTML s elementem
- Integrované vstupní komponenty.
- Komponenta EditForm vázaná na objekt nebo model, který může používat datové poznámky.
- Integrované vstupní komponenty.
Poznámka:
Nepodporované funkce ověřování ASP.NET Core najdete v části Nepodporované funkce ověřování.
Jmenný prostor Microsoft.AspNetCore.Components.Forms poskytuje:
- Třídy pro správu prvků formuláře, stavu a ověřování
- Přístup k integrovaným Input* komponentám
Projekt vytvořený z šablony projektu Blazor obsahuje obor názvů v souboru aplikace _Imports.razor, což zpřístupňuje tento obor názvů komponentám aplikace Razor.
Podporují se standardní formuláře HTML. Vytvořte formulář pomocí normální značky HTML <form> a zadejte obslužnou rutinu @onsubmit pro zpracování odeslané žádosti o formulář.
StarshipPlainForm.razor:
@page "/starship-plain-form"
@inject ILogger<StarshipPlainForm> Logger
<form method="post" @onsubmit="Submit" @formname="starship-plain-form">
<AntiforgeryToken />
<div>
<label>
Identifier:
<InputText @bind-Value="Model!.Id" />
</label>
</div>
<div>
<button type="submit">Submit</button>
</div>
</form>
@code {
[SupplyParameterFromForm]
private Starship? Model { get; set; }
protected override void OnInitialized() => Model ??= new();
private void Submit() => Logger.LogInformation("Id = {Id}", Model?.Id);
public class Starship
{
public string? Id { get; set; }
}
}
@page "/starship-plain-form"
@inject ILogger<StarshipPlainForm> Logger
<form method="post" @onsubmit="Submit" @formname="starship-plain-form">
<AntiforgeryToken />
<div>
<label>
Identifier:
<InputText @bind-Value="Model!.Id" />
</label>
</div>
<div>
<button type="submit">Submit</button>
</div>
</form>
@code {
[SupplyParameterFromForm]
private Starship? Model { get; set; }
protected override void OnInitialized() => Model ??= new();
private void Submit() => Logger.LogInformation("Id = {Id}", Model?.Id);
public class Starship
{
public string? Id { get; set; }
}
}
V předchozí StarshipPlainForm komponentě:
- Formulář se vykreslí tam, kde se
<form>prvek zobrazí. Formulář má název s atributem@formnamedirektivy, který jednoznačně identifikuje formulář pro architekturu Blazor . - Model se vytvoří v bloku komponenty
@codea nachází se ve veřejné vlastnosti (Model). Atribut[SupplyParameterFromForm]označuje, že hodnota přidružené vlastnosti by měla být zadána z dat formuláře. Data v požadavku, který odpovídá názvu vlastnosti, jsou svázaná s vlastností. - Komponenta InputText je vstupní komponenta pro úpravu řetězcových hodnot. Atribut
@bind-Valuedirektivy váže vlastnost modelu na vlastnost komponentyModel.Id. - Metoda
Submitje registrována jako obslužná rutina@onsubmitpro zpětné volání. Obslužná rutina je volána při odeslání formuláře uživatelem.
Důležité
Vždy použijte @formname atribut direktivy s jedinečným názvem formuláře.
Blazor vylepšuje navigaci na stránce a zpracování formulářů tím, že zachytí požadavek a aplikuje odpověď na stávající DOM, přičemž zachovává co nejvíce vykresleného formuláře. Toto vylepšení se vyhne nutnosti plně načíst stránku a poskytuje mnohem plynulejší uživatelské prostředí, podobně jako jednostránková aplikace (SPA), i když se komponenta vykresluje na serveru. Další informace najdete v tématu ASP.NET Blazor Základní směrování a navigace.
Streamované vykreslování je podporováno pro prosté formuláře HTML. Všimněte si, že při použití POST formuláře se streamují pouze aktualizace DOM uvnitř obslužných rutin tohoto formuláře (například @onsubmit). Aktualizace uvnitř OnInitializedAsync jsou streamovány pouze pro požadavky GET. Další informace najdete v tématu Povolit streamování fáze načítání odpovědí POST (dotnet/aspnetcore #50994).
Poznámka:
Odkazy na dokumentaci k referenčnímu zdroji .NET obvykle načítají výchozí větev úložiště, která představuje aktuální vývoj pro příští verzi .NET. Pokud chcete vybrat značku pro konkrétní verzi, použijte rozevírací seznam pro přepínání větví nebo značek. Další informace najdete v tématu Jak vybrat značku verze zdrojového kódu ASP.NET Core (dotnet/AspNetCore.Docs #26205).
Předchozí příklad obsahuje podporu proti padělání pomocí komponenty AntiforgeryToken zahrnuté ve formuláři. Podpora antiforgery je podrobněji vysvětlena v části Podpora antiforgery tohoto článku.
Chcete-li odeslat formulář na základě událostí DOM jiného prvku, například oninput nebo onblur, použijte JavaScript k odeslání formuláře (submit).
Místo použití prostých formulářů v Blazor aplikacích se formulář obvykle definuje s Blazorintegrovanou podporou formulářů pomocí komponenty architektury EditForm . Následující Razor komponenta demonstruje typické prvky, komponenty a Razor kód k vykreslení webového EditForm formuláře pomocí komponenty.
Formulář je definován pomocí Blazor komponenty architektury EditForm . Následující Razor komponenta demonstruje typické prvky, komponenty a Razor kód k vykreslení webového EditForm formuláře pomocí komponenty.
Starship1.razor:
@page "/starship-1"
@inject ILogger<Starship1> Logger
<EditForm Model="Model" OnSubmit="Submit" FormName="Starship1">
<div>
<label>
Identifier:
<InputText @bind-Value="Model!.Id" />
</label>
</div>
<div>
<button type="submit">Submit</button>
</div>
</EditForm>
@code {
[SupplyParameterFromForm]
private Starship? Model { get; set; }
protected override void OnInitialized() => Model ??= new();
private void Submit() => Logger.LogInformation("Id = {Id}", Model?.Id);
public class Starship
{
public string? Id { get; set; }
}
}
@page "/starship-1"
@inject ILogger<Starship1> Logger
<EditForm Model="Model" OnSubmit="Submit" FormName="Starship1">
<div>
<label>
Identifier:
<InputText @bind-Value="Model!.Id" />
</label>
</div>
<div>
<button type="submit">Submit</button>
</div>
</EditForm>
@code {
[SupplyParameterFromForm]
private Starship? Model { get; set; }
protected override void OnInitialized() => Model ??= new();
private void Submit() => Logger.LogInformation("Id = {Id}", Model?.Id);
public class Starship
{
public string? Id { get; set; }
}
}
V předchozí Starship1 komponentě:
- Komponenta EditForm se vykreslí tam, kde se
<EditForm>prvek zobrazí. Formulář je pojmenován pomocí vlastnosti FormName, která jednoznačně identifikuje formulář pro rozhraní Blazor. - Model se vytvoří v bloku komponenty
@codea nachází se ve veřejné vlastnosti (Model). Vlastnost je přiřazena k parametru EditForm.Model . Atribut[SupplyParameterFromForm]označuje, že hodnota přidružené vlastnosti by měla být zadána z dat formuláře. Data v požadavku, který odpovídá názvu vlastnosti, jsou svázaná s vlastností. - Komponenta InputText je vstupní komponentapro úpravu řetězcových hodnot. Atribut
@bind-Valuedirektivy váže vlastnost modelu na vlastnost komponentyModel.Id. - Metoda
Submitje registrována jako obslužná rutina OnSubmit pro zpětné volání. Obslužná rutina je volána při odeslání formuláře uživatelem.
Důležité
Vždy použijte vlastnost FormName s jedinečným názvem formuláře.
Blazor vylepšuje navigaci na stránce a zpracování formulářů pro EditForm komponenty. Další informace najdete v tématu ASP.NET Blazor Základní směrování a navigace.
Vykreslování streamování je podporováno pro EditForm. Všimněte si, že při použití POST formuláře se streamují pouze aktualizace DOM uvnitř obslužných rutin tohoto formuláře (například OnValidSubmit). Aktualizace uvnitř OnInitializedAsync jsou streamovány pouze pro požadavky GET. Další informace najdete v tématu Povolit streamování fáze načítání odpovědí POST (dotnet/aspnetcore #50994).
Poznámka:
Odkazy na dokumentaci k referenčnímu zdroji .NET obvykle načítají výchozí větev úložiště, která představuje aktuální vývoj pro příští verzi .NET. Pokud chcete vybrat značku pro konkrétní verzi, použijte rozevírací seznam pro přepínání větví nebo značek. Další informace najdete v tématu Jak vybrat značku verze zdrojového kódu ASP.NET Core (dotnet/AspNetCore.Docs #26205).
@page "/starship-1"
@inject ILogger<Starship1> Logger
<EditForm Model="Model" OnSubmit="Submit">
<InputText @bind-Value="Model!.Id" />
<button type="submit">Submit</button>
</EditForm>
@code {
public Starship? Model { get; set; }
protected override void OnInitialized() => Model ??= new();
private void Submit()
{
Logger.LogInformation("Model.Id = {Id}", Model?.Id);
}
public class Starship
{
public string? Id { get; set; }
}
}
V předchozí Starship1 komponentě:
- Komponenta EditForm se vykreslí tam, kde se
<EditForm>prvek zobrazí. - Model se vytvoří v bloku komponenty
@codea nachází se v privátním poli (model). Pole je přiřazeno k parametru EditForm.Model . - Komponenta InputText je vstupní komponenta pro úpravu řetězcových hodnot. Atribut
@bind-ValuedirektivyModel.Idsváže vlastnost modelu s InputText vlastností komponenty Value †. - Metoda
Submitje registrována jako obslužná rutina OnSubmit pro zpětné volání. Obslužná rutina je volána při odeslání formuláře uživatelem.
† Další informace o vazbě vlastností najdete v tématu ASP.NET Základní Blazor datová vazba.
V dalším příkladu je předchozí komponenta upravena tak, aby vytvořila formulář v komponentě Starship2 :
- OnSubmit je nahrazen OnValidSubmit, který zpracovává přiřazenou obsluhu události, pokud je formulář platný při odeslání uživatelem.
- Komponenta ValidationSummary se přidá k zobrazení ověřovacích zpráv, pokud je formulář při odeslání formuláře neplatný.
- Validátor datových poznámek (DataAnnotationsValidator součást†) připojuje podporu ověřování pomocí datových poznámek:
- Pokud je pole formuláře
<input>ponecháno prázdné při výběru tlačítkaSubmit, zobrazí se v souhrnu ověření (ValidationSummary komponenta) („The Id field is required.“) chyba aSubmitnení volána. -
<input>Pokud pole formuláře obsahuje při výběru tlačítka více než deset znakůSubmit, zobrazí se v souhrnu ověření chyba ("Id is too long.").Submitnení volána. - Pokud pole formuláře obsahuje platnou hodnotu při výběru tlačítka
<input>, je volána funkceSubmit.
- Pokud je pole formuláře
†Komponenta DataAnnotationsValidator je pokryta v části komponenty Validator. ValidationSummary Součást je popsána v části Souhrn ověření a Ověřovací zpráva.
Starship2.razor:
@page "/starship-2"
@using System.ComponentModel.DataAnnotations
@inject ILogger<Starship2> Logger
<EditForm Model="Model" OnValidSubmit="Submit" FormName="Starship2">
<DataAnnotationsValidator />
<ValidationSummary />
<label>
Identifier:
<InputText @bind-Value="Model!.Id" />
</label>
<button type="submit">Submit</button>
</EditForm>
@code {
[SupplyParameterFromForm]
private Starship? Model { get; set; }
protected override void OnInitialized() => Model ??= new();
private void Submit() => Logger.LogInformation("Id = {Id}", Model?.Id);
public class Starship
{
[Required]
[StringLength(10, ErrorMessage = "Id is too long.")]
public string? Id { get; set; }
}
}
@page "/starship-2"
@using System.ComponentModel.DataAnnotations
@inject ILogger<Starship2> Logger
<EditForm Model="Model" OnValidSubmit="Submit" FormName="Starship2">
<DataAnnotationsValidator />
<ValidationSummary />
<label>
Identifier:
<InputText @bind-Value="Model!.Id" />
</label>
<button type="submit">Submit</button>
</EditForm>
@code {
[SupplyParameterFromForm]
private Starship? Model { get; set; }
protected override void OnInitialized() => Model ??= new();
private void Submit() => Logger.LogInformation("Id = {Id}", Model?.Id);
public class Starship
{
[Required]
[StringLength(10, ErrorMessage = "Id is too long.")]
public string? Id { get; set; }
}
}
@page "/starship-2"
@using System.ComponentModel.DataAnnotations
@inject ILogger<Starship2> Logger
<EditForm Model="Model" OnValidSubmit="Submit">
<DataAnnotationsValidator />
<ValidationSummary />
<InputText @bind-Value="Model!.Id" />
<button type="submit">Submit</button>
</EditForm>
@code {
public Starship? Model { get; set; }
protected override void OnInitialized() => Model ??= new();
private void Submit()
{
Logger.LogInformation("Id = {Id}", Model?.Id);
}
public class Starship
{
[Required]
[StringLength(10, ErrorMessage = "Id is too long.")]
public string? Id { get; set; }
}
}
Zpracování odeslání formuláře
EditForm poskytuje následující zpětná volání pro zpracování odeslání formuláře:
- Použijte OnValidSubmit k přiřazení obslužné rutiny události, která se spustí při odeslání formuláře s platnými poli.
- Použijte OnInvalidSubmit k přiřazení obslužné rutiny události, která se spustí při odeslání formuláře s neplatnými poli.
-
OnSubmit slouží k přiřazení obslužné rutiny události k spuštění bez ohledu na stav ověření polí formuláře. Formulář je ověřen voláním EditContext.Validate v obslužné metodě události. Pokud se Validate vrátí jako
true, formulář je platný.
Vymazání formuláře nebo pole
Resetování formuláře vrátí jeho model do výchozího stavu a lze to provést uvnitř nebo vně značek EditForm.
<button @onclick="ClearForm">Clear form</button>
...
private void ClearForm() => Model = new();
Případně použijte explicitní Razor výraz:
<button @onclick="@(() => Model = new())">Clear form</button>
Resetováním pole vymažete jeho hodnotu modelu do původního stavu.
<button @onclick="ResetId">Reset Identifier</button>
...
private void ResetId() => Model!.Id = string.Empty;
Případně použijte explicitní Razor výraz:
<button @onclick="@(() => Model!.Id = string.Empty)">Reset Identifier</button>
V předchozích příkladech není nutné volat StateHasChanged, protože StateHasChanged je automaticky volán frameworkem Blazor k opětovnému znovuzobrazení komponenty po vyvolání obslužné rutiny události. Pokud se obslužná rutina události nepoužívá k vyvolání metod, které vymažou formulář nebo pole, měl by kód vývojáře volat StateHasChanged , aby komponentu znovu vymazal.
Podpora antifalšovací
Služby antiforgery se automaticky přidají do Blazor aplikací, když je AddRazorComponents volána v souboru Program.
Aplikace používá Antiforgery Middleware voláním UseAntiforgery v procesu zpracování požadavků v souboru Program.
UseAntiforgery je volána po volání UseRouting. Pokud existují volání UseRouting a UseEndpoints, volání na UseAntiforgery musí jít mezi nimi. Hovor UseAntiforgery musí být proveden po volání na UseAuthentication a UseAuthorization.
Komponenta AntiforgeryToken vykresluje antiforgery token jako skryté pole a [RequireAntiforgeryToken] atribut umožňuje ochranu proti padělání. Pokud se kontrola antiforgery nezdaří, vyvolá se odpověď 400 - Bad Request a formulář se nezpracuje.
U formulářů založených na EditForm se automaticky přidá komponenta AntiforgeryToken a atribut [RequireAntiforgeryToken] za účelem zajištění ochrany proti padělání.
Pro formuláře založené na elementu HTML <form> ručně přidejte komponentu AntiforgeryToken do formuláře:
<form method="post" @onsubmit="Submit" @formname="starshipForm">
<AntiforgeryToken />
<input id="send" type="submit" value="Send" />
</form>
@if (submitted)
{
<p>Form submitted!</p>
}
@code{
private bool submitted = false;
private void Submit() => submitted = true;
}
Varování
Pro formuláře založené na HTML elementu EditForm nebo <form> lze antiforgery ochranu zakázat předáním hodnoty required: false k atributu [RequireAntiforgeryToken]. Následující příklad zakáže ochranu antiforgery a není doporučeno pro veřejné aplikace:
@using Microsoft.AspNetCore.Antiforgery
@attribute [RequireAntiforgeryToken(required: false)]
Další informace najdete v tématu
Zmírnění útoků nadměrným odesíláním dat
Staticky vykreslené formuláře na straně serveru, například formuláře, které se obvykle používají v komponentách, které vytvářejí a upravují záznamy v databázi s modelem formuláře, mohou být zranitelné vůči útoku zvanému overposting, také známému jako útok pomocí hromadného přiřazení. Útok na nadměrné odeslání nastane, když uživatel se zlými úmysly odešle formulář HTML POST na server, který zpracovává data pro vlastnosti, jež nejsou součástí vykresleného formuláře a které vývojář nechce uživatelům povolit upravovat. Pojem "overposting" doslova znamená, že uživatel se zlými úmysly nadměrně posílal POST požadavky s formulářem.
Overposting není problém, pokud model neobsahuje omezené vlastnosti pro operace vytváření a aktualizace. Je však důležité mít na paměti nadměrné zasílání při práci se statickými formuláři založenými na SSR, které spravujete.
Aby se zabránilo nadměrnému odesílání, doporučujeme pro formulář a databázi použít samostatný model zobrazení a objekt pro přenos dat (DTO) při operacích vytvoření (vložení) a aktualizace. Při odeslání formuláře se k úpravě databáze používají pouze vlastnosti modelu zobrazení nebo DTO komponenty a kódu jazyka C#. Veškerá další data zahrnutá škodlivým uživatelem se zahodí, takže škodlivému uživateli se zabrání v provedení útoku vícenásobného odeslání.
Vylepšené zpracování formulářů
Vylepšení navigace pro požadavky POST formuláře s parametrem Enhance formulářů EditForm nebo atributem data-enhance pro formuláře HTML (<form>):
<EditForm ... Enhance ...>
...
</EditForm>
<form ... data-enhance ...>
...
</form>
Nepodporováno: U nadřazeného prvku formuláře nelze nastavit rozšířenou navigaci, která umožňuje rozšířené zpracování formulářů.
<div ... data-enhance ...>
<form ...>
<!-- NOT enhanced -->
</form>
</div>
Vylepšené formulářové příspěvky fungují pouze s Blazor koncovými body. Publikování vylepšeného formuláře na nesprávnýBlazor koncový bod způsobí chybu.
Zakázání rozšířeného zpracování formulářů:
- Pro odebrání EditForm, odstraňte parametr Enhance z elementu formuláře (nebo ho nastavte na
false:Enhance="false"). - Pro HTML
<form>odebertedata-enhanceatribut z elementu formuláře (nebo ho nastavte nafalse:data-enhance="false").
BlazorVylepšená navigace a zpracování formulářů můžou vrátit dynamické změny modelu DOM, pokud aktualizovaný obsah není součástí vykreslování serveru. Chcete-li zachovat obsah elementu, použijte data-permanent atribut.
V následujícím příkladu se obsah elementu <div> dynamicky aktualizuje skriptem při načtení stránky:
<div data-permanent>
...
</div>
Chcete-li zakázat rozšířenou navigaci a zpracování formulářů globálně, podívejte se do spuštění Blazor ASP.NET Core.
Pokyny k používání enhancedload události pro sledování vylepšených aktualizací stránek najdete v části ASP.NET Core Blazor směrování a navigace.
Příklady
Příklady nepodporují rozšířené zpracování formulářů pro žádosti POST, ale všechny příklady je možné aktualizovat, aby přijaly vylepšené funkce podle pokynů v části Rozšířené zpracování formulářů.
Příklady používají operátor s cílovým typem new, který byl zaveden v jazyce C# 9 a .NET 5. V následujícím příkladu není explicitně uveden typ pro operátor new.
public ShipDescription ShipDescription { get; set; } = new();
Pokud používáte C# 8 nebo starší (ASP.NET Core 3.1), upravte ukázkový kód tak, aby uvedl typ operátoru new :
public ShipDescription ShipDescription { get; set; } = new ShipDescription();
Komponenty používají odkazové typy s možnou hodnotou null (NRT) a kompilátor .NET provádí statickou analýzu stavu null, z nichž obě jsou podporovány v .NET 6 nebo novějším. Další informace najdete v tématu Migrace z ASP.NET Core v .NET 5 na .NET 6.
Pokud používáte C# 9 nebo starší (.NET 5 nebo starší), odeberte z příkladů NRTs. Obvykle se jedná pouze o odebrání otazníků (?) a vykřičníků (!) z typů v ukázkovém kódu.
Sada .NET SDK použije implicitní globální using direktivy pro projekty při cílení na .NET 6 nebo novější. Příklady používají logger k zaznamenávání informací o zpracování formulářů, ale není nutné zadat @using směrnici Microsoft.Extensions.Logging pro jmenný prostor v příkladech komponent. Další informace naleznete v tématu Sady SDK projektu .NET: Implicitní direktivy používání.
Pokud používáte C# 9 nebo starší (.NET 5 nebo starší), přidejte @using direktivy na začátek komponenty za direktivu @page pro jakékoli rozhraní API požadované v příkladu. Vyhledejte obory názvů rozhraní API v sadě Visual Studio (klikněte na objekt pomocí pravého tlačítka myši a vyberte Náhled definice) nebo v prohlížeči rozhraní .NET API.
Abychom si ukázali, jak formuláře fungují s ověřováním datových poznámek , využívají System.ComponentModel.DataAnnotations ukázkové komponenty rozhraní API. Pokud se chcete vyhnout nadbytečnému řádku kódu v komponentách, které používají datové poznámky, zpřístupňte obor názvů v rámci komponent aplikace souborem importu (_Imports.razor):
@using System.ComponentModel.DataAnnotations
Příklady formulářů odkazují na aspekty vesmíru Star Trek . Star Trek je chráněný autorskými právy ©1966-2023 společností CBS Studios a Paramount.
Ověření na straně klienta vyžaduje specifický proces.
Blazor Web Appověření na klientské straně vyžaduje aktivní BlazorSignalR obvod. Ověřování na straně klienta není k dispozici pro formuláře v součástech, které přijaly statické vykreslování na straně serveru (statické SSR). Formuláře, které používají statický SSR, se po odeslání ověřují na serveru.
Nepodporované funkce ověřování
Všechny předdefinované validátory datových poznámek jsou podporovány Blazor s výjimkou ověřovacího atributu[Remote].
Ověřování jQuery není podporováno v komponentách Razor. Doporučujeme některý z následujících přístupů:
- Postupujte podle pokynů v ASP.NET Core Blazor ověřování formulářů buď podle jedné z těchto metod:
- Ověřování na straně serveru v interaktivním režimu vykreslování v Blazor Web App.
- Ověřování na straně klienta v samostatné Blazor webové aplikaci Web Assembly.
- Použití nativních ověřovacích atributů HTML (viz ověření formuláře na straně klienta).
- Přijměte javascriptovou knihovnu pro ověřování třetí strany.
U staticky vykreslených formulářů na serveru je potřeba zvážit nový mechanismus ověřování na straně klienta. Další informace naleznete v tématu Vytvoření serverem vykreslených formulářů s ověřováním na straně klienta pomocí Blazor bez okruhu (dotnet/aspnetcore #51040).
Další materiály
- nahrávání souborů ASP.NET Core Blazor
- ukázkové úložiště GitHub (jak stáhnout)
-
Úložiště ASP.NET Core na GitHubu zahrnuje testovací prostředky
dotnet/aspnetcore
- nahrávání souborů ASP.NET Core Blazor
- Zabezpečení hostované aplikace ASP.NET Core Blazor WebAssembly pomocí ID Microsoft Entra
- Zabezpečení hostované aplikace ASP.NET Core Blazor WebAssembly pomocí Azure Active Directory B2C
- Zabezpečení hostované aplikace ASP.NET Core Blazor WebAssembly pomocí Identity serveru
- ukázkové úložiště GitHub (jak stáhnout)
-
Úložiště ASP.NET Core na GitHubu zahrnuje testovací prostředky
dotnet/aspnetcore