Omówienie formularzy ASP.NET Core Blazor
Uwaga
Nie jest to najnowsza wersja tego artykułu. Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.
Ostrzeżenie
Ta wersja ASP.NET Core nie jest już obsługiwana. Aby uzyskać więcej informacji, zobacz .NET i .NET Core Support Policy (Zasady obsługi platformy .NET Core). Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.
Ważne
Te informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany, zanim zostanie wydany komercyjnie. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.
W tym artykule wyjaśniono, jak używać formularzy w programie Blazor.
Składniki wejściowe i formularze
Platforma Blazor obsługuje formularze i udostępnia wbudowane składniki wejściowe:
- Powiązana z obiektem lub modelem, który może używać adnotacji danych.
- Formularze HTML z elementem
<form>
. - EditForm Składniki.
- Formularze HTML z elementem
- Wbudowane składniki wejściowe.
- EditForm Składnik powiązany z obiektem lub modelem, który może używać adnotacji danych.
- Wbudowane składniki wejściowe.
Uwaga
Nieobsługiwane funkcje weryfikacji ASP.NET Core zostały omówione w sekcji Nieobsługiwane funkcje sprawdzania poprawności.
Microsoft.AspNetCore.Components.Forms Przestrzeń nazw zapewnia:
- Klasy do zarządzania elementami formularza, stanem i walidacją.
- Dostęp do wbudowanych Input* składników.
Projekt utworzony na podstawie Blazor szablonu projektu zawiera przestrzeń nazw w pliku aplikacji, która udostępnia przestrzeń nazw składnikom aplikacji _Imports.razor
Razor .
Obsługiwane są standardowe formularze HTML. Utwórz formularz przy użyciu normalnego tagu HTML <form>
i określ procedurę @onsubmit
obsługi przesłanego żądania formularza.
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; }
}
}
W poprzednim StarshipPlainForm
składniku:
- Formularz jest renderowany, gdzie
<form>
pojawia się element. Formularz ma nazwę z atrybutem@formname
dyrektywy, który jednoznacznie identyfikuje formularz w Blazor strukturze. - Model jest tworzony w bloku składnika
@code
i przechowywany we właściwości publicznej (Model
). Atrybut[SupplyParameterFromForm]
wskazuje, że wartość skojarzonej właściwości powinna być dostarczana z danych formularza. Dane w żądaniu zgodnym z nazwą właściwości są powiązane z właściwością. - Składnik InputText jest składnikiem wejściowym do edytowania wartości ciągów. Atrybut
@bind-Value
dyrektywy wiążeModel.Id
właściwość modelu z właściwością InputText składnika Value . - Metoda jest zarejestrowana
Submit
jako procedura obsługi wywołania zwrotnego@onsubmit
. Procedura obsługi jest wywoływana po przesłaniu formularza przez użytkownika.
Ważne
Zawsze używaj atrybutu @formname
dyrektywy z unikatową nazwą formularza.
Blazor Ulepsza nawigację na stronie i obsługę formularzy, przechwytując żądanie w celu zastosowania odpowiedzi do istniejącego modelu DOM, zachowując jak najwięcej renderowanego formularza. Rozszerzenie pozwala uniknąć konieczności pełnego załadowania strony i zapewnia znacznie bardziej płynne środowisko użytkownika, podobnie jak aplikacja jednostronicowa (SPA), chociaż składnik jest renderowany na serwerze. Aby uzyskać więcej informacji, zobacz ASP.NET Core Blazor routing i nawigacja.
Renderowanie strumieniowe jest obsługiwane w przypadku zwykłych formularzy HTML.
Uwaga
Linki dokumentacji do źródła referencyjnego platformy .NET zwykle ładują domyślną gałąź repozytorium, która odzwierciedla bieżące programowanie dla następnej wersji platformy .NET. Aby wybrać tag dla określonej wersji, użyj listy rozwijanej Przełącz gałęzie lub tagi. Aby uzyskać więcej informacji, zobacz Jak wybrać tag wersji kodu źródłowego platformy ASP.NET Core (dotnet/AspNetCore.Docs #26205).
Powyższy przykład obejmuje obsługę ochrony przed fałszerzami, dołączając AntiforgeryToken składnik w formularzu. Pomoc techniczna dotycząca ochrony przed fałszerzami jest bardziej objaśniona w sekcji pomocy technicznej dotyczącej ochrony przed fałszerzami w tym artykule.
Aby przesłać formularz na podstawie zdarzeń DOM innego elementu, na przykład oninput
lub onblur
, użyj języka JavaScript do przesłania formularza (submit
dokumentacja MDN).
Zamiast używać zwykłych formularzy w Blazor aplikacjach, formularz jest zwykle definiowany z wbudowaną obsługą Blazorformularzy przy użyciu składnika platformy EditForm . Poniższy Razor składnik przedstawia typowe elementy, składniki i Razor kod w celu renderowania kształtów internetowych przy użyciu EditForm składnika.
Formularz jest definiowany przy użyciu Blazor składnika platformy EditForm . Poniższy Razor składnik przedstawia typowe elementy, składniki i Razor kod w celu renderowania kształtów internetowych przy użyciu EditForm składnika.
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; }
}
}
W poprzednim Starship1
składniku:
- Składnik EditForm jest renderowany, gdzie
<EditForm>
pojawia się element. Formularz ma nazwę z atrybutem@formname
dyrektywy, który jednoznacznie identyfikuje formularz w Blazor strukturze. - Model jest tworzony w bloku składnika
@code
i przechowywany we właściwości publicznej (Model
). Właściwość jest przypisywana do parametru EditForm.Model . Atrybut[SupplyParameterFromForm]
wskazuje, że wartość skojarzonej właściwości powinna być dostarczana z danych formularza. Dane w żądaniu zgodnym z nazwą właściwości są powiązane z właściwością. - Składnik InputText jest składnikiem wejściowym do edytowania wartości ciągów. Atrybut
@bind-Value
dyrektywy wiążeModel.Id
właściwość modelu z właściwością InputText składnika Value . - Metoda jest zarejestrowana
Submit
jako procedura obsługi wywołania zwrotnego OnSubmit . Procedura obsługi jest wywoływana po przesłaniu formularza przez użytkownika.
Ważne
Zawsze używaj atrybutu @formname
dyrektywy z unikatową nazwą formularza.
Blazor Usprawnia nawigację po stronie i obsługę formularzy dla EditForm składników. Aby uzyskać więcej informacji, zobacz ASP.NET Core Blazor routing i nawigacja.
Renderowanie przesyłania strumieniowego jest obsługiwane w przypadku programu EditForm.
Uwaga
Linki dokumentacji do źródła referencyjnego platformy .NET zwykle ładują domyślną gałąź repozytorium, która odzwierciedla bieżące programowanie dla następnej wersji platformy .NET. Aby wybrać tag dla określonej wersji, użyj listy rozwijanej Przełącz gałęzie lub tagi. Aby uzyskać więcej informacji, zobacz Jak wybrać tag wersji kodu źródłowego platformy 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; }
}
}
W poprzednim Starship1
składniku:
- Składnik EditForm jest renderowany, gdzie
<EditForm>
pojawia się element. - Model jest tworzony w bloku składnika
@code
i przechowywany w polu prywatnym (model
). Pole jest przypisane do parametru EditForm.Model . - Składnik InputText jest składnikiem wejściowym do edytowania wartości ciągów. Atrybut
@bind-Value
dyrektywy wiążeModel.Id
właściwość modelu z właściwością InputText składnika Value †. - Metoda jest zarejestrowana
Submit
jako procedura obsługi wywołania zwrotnego OnSubmit . Procedura obsługi jest wywoływana po przesłaniu formularza przez użytkownika.
† Aby uzyskać więcej informacji na temat powiązania właściwości, zobacz powiązanie danych ASP.NET CoreBlazor.
W następnym przykładzie poprzedni składnik zostanie zmodyfikowany w celu utworzenia formularza w składniku Starship2
:
- OnSubmit Element jest zastępowany elementem , który przetwarza przypisaną procedurę OnValidSubmitobsługi zdarzeń, jeśli formularz jest prawidłowy podczas przesyłania przez użytkownika.
- Składnik ValidationSummary jest dodawany do wyświetlania komunikatów weryfikacji, gdy formularz jest nieprawidłowy podczas przesyłania formularza.
- Moduł sprawdzania poprawności adnotacji danych (DataAnnotationsValidator składnik†) dołącza obsługę walidacji przy użyciu adnotacji danych:
<input>
Jeśli pole formularza pozostanie puste po wybraniuSubmit
przycisku, w podsumowaniu weryfikacji (ValidationSummaryskładnik}) ("The Id field is required.
") pojawia się błąd iSubmit
nie jest wywoływany.<input>
Jeśli pole formularza zawiera więcej niż dziesięć znaków po wybraniuSubmit
przycisku, w podsumowaniu weryfikacji ("Id is too long.
").Submit
nie jest wywoływana.<input>
Jeśli pole formularza zawiera prawidłową wartość po wybraniuSubmit
przycisku,Submit
jest wywoływana.
†Składnik DataAnnotationsValidator jest omówiony w sekcji Składnik modułu sprawdzania poprawności. }Składnik ValidationSummary jest omówiony w sekcji Składniki podsumowania i komunikatu weryfikacji.
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; }
}
}
Obsługa przesyłania formularza
Program EditForm udostępnia następujące wywołania zwrotne do obsługi przesyłania formularza:
- Użyj OnValidSubmit polecenia , aby przypisać procedurę obsługi zdarzeń, aby uruchomić formularz z prawidłowymi polami.
- Użyj OnInvalidSubmit polecenia , aby przypisać procedurę obsługi zdarzeń do uruchomienia po przesłaniu formularza z nieprawidłowymi polami.
- Użyj polecenia OnSubmit , aby przypisać procedurę obsługi zdarzeń do uruchomienia niezależnie od stanu weryfikacji pól formularza. Formularz jest weryfikowany przez wywołanie EditContext.Validate metody obsługi zdarzeń. Jeśli Validate zwraca
true
wartość , formularz jest prawidłowy.
Czyszczenie formularza lub pola
Zresetuj formularz, usuwając jego model z powrotem stan domyślny, który można wykonać wewnątrz lub poza znacznikiem EditForm:
<button @onclick="ClearForm">Clear form</button>
...
private void ClearForm() => Model = new();
Alternatywnie użyj wyrażenia jawnego Razor :
<button @onclick="@(() => Model = new())">Clear form</button>
Zresetuj pole, usuwając jego wartość modelu z powrotem do stanu domyślnego:
<button @onclick="ResetId">Reset Identifier</button>
...
private void ResetId() => Model!.Id = string.Empty;
Alternatywnie użyj wyrażenia jawnego Razor :
<button @onclick="@(() => Model!.Id = string.Empty)">Reset Identifier</button>
Nie ma potrzeby wywoływania StateHasChanged w poprzednich przykładach, ponieważ StateHasChanged program jest automatycznie wywoływany przez platformę Blazor w celu rerender składnika po wywołaniu programu obsługi zdarzeń. Jeśli program obsługi zdarzeń nie jest używany do wywoływania metod, które czyszczają formularz lub pole, kod dewelopera powinien wywołać StateHasChanged element rerender składnika.
Obsługa ochrony przed fałszerzami
Usługi ochrony przed fałszerzami są automatycznie dodawane do Blazor aplikacji, gdy AddRazorComponents jest wywoływana Program
w pliku.
Aplikacja używa oprogramowania pośredniczącego antiforgery przez wywołanie UseAntiforgery w potoku przetwarzania żądań w Program
pliku. UseAntiforgery jest wywoływana po wywołaniu metody UseRouting. Jeśli istnieją połączenia do UseRouting i UseEndpoints, wywołanie UseAntiforgery musi przejść między nimi. Wywołanie UseAntiforgery musi zostać umieszczone po wywołaniach do UseAuthentication i UseAuthorization.
Składnik AntiforgeryToken renderuje token antyforgery jako ukryte pole, a [RequireAntiforgeryToken]
atrybut umożliwia ochronę przed fałszerzją. Jeśli sprawdzanie antyforgery nie powiedzie się, zostanie 400 - Bad Request
zgłoszony odpowiedź i formularz nie zostanie przetworzony.
W przypadku formularzy opartych na EditFormskładniku i [RequireAntiforgeryToken]
atrybucie AntiforgeryToken są automatycznie dodawane w celu zapewnienia ochrony przed fałszerzami.
W przypadku formularzy opartych na elemencie HTML <form>
ręcznie dodaj AntiforgeryToken składnik do formularza:
<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;
}
Ostrzeżenie
W przypadku formularzy opartych na elememencie EditForm HTML <form>
można wyłączyć ochronę przed fałszerzją, przekazując required: false
do atrybutu [RequireAntiforgeryToken]
. Poniższy przykład wyłącza funkcję ochrony przed fałszerzją i nie jest zalecany w przypadku aplikacji publicznych:
@using Microsoft.AspNetCore.Antiforgery
@attribute [RequireAntiforgeryToken(required: false)]
Aby uzyskać więcej informacji, zobacz ASP.NET Core authentication and authorization (Uwierzytelnianie i autoryzacja na platformie ASP.NET CoreBlazor).
Eliminowanie ataków polegających na przesłanianiu
Statycznie renderowane formularze po stronie serwera, takie jak te, które są zwykle używane w składnikach tworzących i edytujących rekordy w bazie danych z modelem formularzy, mogą być narażone na atak nadmierny , znany również jako atak masowego przypisania . Atak overposting występuje, gdy złośliwy użytkownik wystawia formularz HTML POST na serwerze, który przetwarza dane właściwości, które nie są częścią renderowanego formularza i że deweloper nie chce zezwalać użytkownikom na modyfikowanie. Termin "overposting" oznacza dosłownie, że złośliwy użytkownik ma over-POSTed z formularzem.
Overposting nie jest problemem, gdy model nie zawiera ograniczonych właściwości operacji tworzenia i aktualizowania. Jednak ważne jest, aby pamiętać o zastępowaniu podczas pracy z statycznymi formularzami opartymi na Blazor protokole SSR, które są obsługiwane.
Aby wyeliminować przesłanie, zalecamy użycie oddzielnego modelu widoku/obiektu transferu danych (DTO) dla formularza i bazy danych za pomocą operacji tworzenia (wstawiania) i aktualizacji. Po przesłaniu formularza tylko właściwości modelu widoku/DTO są używane przez składnik i kod C# do modyfikowania bazy danych. Wszelkie dodatkowe dane zawarte przez złośliwego użytkownika są odrzucane, więc złośliwy użytkownik nie może przeprowadzić ataku overpostingu.
Ulepszona obsługa formularzy
Ulepszanie nawigacji dla żądań POST formularza za pomocą parametru Enhance formularzy lub atrybutu data-enhance
formularzy EditForm HTML (<form>
):
<EditForm ... Enhance ...>
...
</EditForm>
<form ... data-enhance ...>
...
</form>
Nieobsługiwane: nie można ustawić rozszerzonej nawigacji na elemektorze przodka formularza w celu włączenia rozszerzonej obsługi formularzy.
<div ... data-enhance ...>
<form ...>
<!-- NOT enhanced -->
</form>
</div>
Rozszerzone wpisy formularza działają tylko z punktami Blazor końcowymi. Opublikowanie rozszerzonego formularza wBlazor punkcie końcowym powoduje wystąpienie błędu.
Aby wyłączyć rozszerzoną obsługę formularzy:
- W przypadku elementu EditFormusuń Enhance parametr z elementu formularza (lub ustaw go na wartość
false
:Enhance="false"
). - W przypadku kodu HTML
<form>
usuńdata-enhance
atrybut z elementu formularza (lub ustaw go na wartośćfalse
:data-enhance="false"
).
BlazorUlepszona nawigacja i przekazywanie formularzy mogą cofnąć dynamiczne zmiany w modelu DOM, jeśli zaktualizowana zawartość nie jest częścią renderowania serwera. Aby zachować zawartość elementu, użyj atrybutu data-permanent
.
W poniższym przykładzie zawartość <div>
elementu jest aktualizowana dynamicznie przez skrypt podczas ładowania strony:
<div data-permanent>
...
</div>
Aby wyłączyć rozszerzoną nawigację i obsługę formularzy globalnie, zobacz uruchamianie ASP.NET CoreBlazor.
Aby uzyskać wskazówki dotyczące używania enhancedload
zdarzenia do nasłuchiwania rozszerzonych aktualizacji stron, zobacz ASP.NET Core Blazor routing i nawigacja.
Przykłady
Przykłady nie przyjmują rozszerzonej obsługi formularzy dla żądań POST formularza, ale wszystkie przykłady można zaktualizować w celu wdrożenia rozszerzonych funkcji, postępując zgodnie ze wskazówkami w sekcji Rozszerzona obsługa formularzy .
Przykłady używają operatora typu new
docelowego, który został wprowadzony w języku C# 9.0 i .NET 5. W poniższym przykładzie typ nie jest jawnie określony dla new
operatora:
public ShipDescription ShipDescription { get; set; } = new();
Jeśli używasz języka C# 8.0 lub starszego (ASP.NET Core 3.1), zmodyfikuj przykładowy kod, aby oznaczyć typ new
operatora:
public ShipDescription ShipDescription { get; set; } = new ShipDescription();
Składniki używają typów odwołań dopuszczających wartość null (NRT), a kompilator platformy .NET wykonuje analizę statyczną stanu null, z których obie są obsługiwane na platformie .NET 6 lub nowszym. Aby uzyskać więcej informacji, zobacz Migracja z platformy ASP.NET Core w wersji 5.0 do wersji 6.0.
W przypadku używania języka C# 9.0 lub starszego (.NET 5 lub starszego), usuń z przykładów punkty NRT. Zwykle polega to jedynie na usunięciu znaków zapytania (?
) i wykrzyknika (!
) z typów w przykładowym kodzie.
Zestaw .NET SDK stosuje niejawne dyrektywy globalne using
do projektów podczas określania wartości docelowej platformy .NET 6 lub nowszej. Przykłady używają rejestratora do rejestrowania informacji o przetwarzaniu formularzy, ale nie jest konieczne określenie @using
dyrektywy dla Microsoft.Extensions.Logging przestrzeni nazw w przykładach składników. Aby uzyskać więcej informacji, zobacz Zestawy SDK projektu platformy .NET: niejawne używanie dyrektyw.
Jeśli używasz języka C# 9.0 lub starszego (.NET 5 lub starszego), dodaj @using
dyrektywy na początku składnika po @page
dyrektywie dla dowolnego interfejsu API wymaganego przez przykład. Znajdź przestrzenie nazw interfejsu API za pomocą programu Visual Studio (kliknij prawym przyciskiem myszy obiekt i wybierz pozycję Zobacz definicję) lub przeglądarkę interfejsu API platformy .NET.
Aby zademonstrować sposób pracy formularzy z walidacją adnotacji danych, przykładowe składniki korzystają z System.ComponentModel.DataAnnotations interfejsu API. Jeśli chcesz uniknąć dodatkowego wiersza kodu w składnikach korzystających z adnotacji danych, udostępnij przestrzeń nazw w składnikach aplikacji przy użyciu pliku importu (_Imports.razor
):
@using System.ComponentModel.DataAnnotations
Przykłady formularzy odwołują się do aspektów wszechświata Star Trek . Star Trek jest prawem autorskim ©1966-2023 CBS Studios i Paramount.
Walidacja po stronie klienta wymaga obwodu
W Blazor Web Appprogramie s weryfikacja po stronie klienta wymaga aktywnego BlazorSignalR obwodu. Walidacja po stronie klienta nie jest dostępna dla formularzy w składnikach, które przyjęły statyczne renderowanie po stronie serwera (statyczne SSR). Formularze, które przyjmują statyczne SSR, są weryfikowane na serwerze po przesłaniu formularza.
Nieobsługiwane funkcje walidacji
Wszystkie wbudowane moduły sprawdzania poprawności danych są obsługiwane Blazor z wyjątkiem atrybutu [Remote]
walidacji.
Sprawdzanie poprawności zapytania jQuery nie jest obsługiwane w Razor składnikach. Zalecamy dowolne z następujących podejść:
- Postępuj zgodnie ze wskazówkami w ASP.NET Core Blazor forms validation for:
- Walidacja po stronie serwera w Blazor Web App programie, który przyjmuje tryb renderowania interakcyjnego.
- Walidacja po stronie klienta w autonomicznej Blazor aplikacji zestawu internetowego.
- Użyj natywnych atrybutów weryfikacji HTML (zobacz Walidacja formularza po stronie klienta (dokumentacja MDN)).
- Adopt a third-party validation JavaScript library (Wdrażanie biblioteki JavaScript walidacji innej firmy).
W przypadku statycznie renderowanych formularzy na serwerze nowy mechanizm weryfikacji po stronie klienta jest brany pod uwagę pod kątem platformy .NET 10 pod koniec 2025 r. Aby uzyskać więcej informacji, zobacz Create server rendered forms with client validation using without a circuit ( #51040)( Tworzenie formularzy renderowanych przez serwer z walidacją klienta przy użyciu Blazor bez obwodu (dotnet/aspnetcore
#51040).
Dodatkowe zasoby
- przekazywanie plików ASP.NET Core Blazor
- Zabezpieczanie hostowanej aplikacji ASP.NET Core Blazor WebAssembly przy użyciu identyfikatora Entra firmy Microsoft
- Zabezpieczanie hostowanej aplikacji ASP.NET Core Blazor WebAssembly za pomocą usługi Azure Active Directory B2C
- Zabezpieczanie hostowanej aplikacji ASP.NET Core Blazor WebAssembly za pomocą Identity serwera
- Blazorprzykładowe repozytorium GitHub () (
dotnet/blazor-samples
jak pobrać) - ASP.NET Core repozytorium GitHub (
dotnet/aspnetcore
) zasobów testowych formularzy