Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Catatan
Ini bukan versi terbaru dari artikel ini. Untuk rilis saat ini, lihat artikel ini dalam versi .NET 10.
Peringatan
Versi ASP.NET Core ini tidak lagi didukung. Untuk informasi selengkapnya, lihat Kebijakan Dukungan Inti .NET dan .NET. Untuk rilis saat ini, lihat artikel ini dalam versi .NET 10.
Artikel ini menjelaskan cara menggunakan formulir di Blazor.
Komponen dan formulir input
Blazor Kerangka kerja mendukung formulir dan menyediakan komponen input bawaan:
- Terikat ke objek atau model yang dapat menggunakan anotasi data.
- Formulir HTML dengan
<form>elemen . - EditForm Komponen.
- Formulir HTML dengan
- Komponen input bawaan.
- Komponen EditForm terikat ke objek atau model yang dapat menggunakan anotasi data.
- Komponen input bawaan.
Dalam Blazor Web App yang menggunakan perenderan sisi server statis (SSR statis), komponen input secara otomatis ikut serta dalam validasi di sisi klien saat formulir berisi komponen DataAnnotationsValidator. Untuk detailnya, lihat validasi formulir ASP.NET Core Blazor.
Catatan
Fitur validasi ASP.NET Core yang tidak didukung tercakup dalam bagian Fitur validasi yang tidak didukung.
Namespace Microsoft.AspNetCore.Components.Forms menyediakan:
- Kelas untuk mengelola elemen formulir, status, dan validasi.
- Akses ke komponen bawaan Input* .
Proyek yang dibuat dari Blazor templat proyek menyertakan namespace dalam file aplikasi _Imports.razor, yang membuat namespace tersedia untuk komponen aplikasi Razor.
Formulir HTML standar didukung. Buat formulir menggunakan tag HTML <form> normal dan tentukan @onsubmit handler untuk menangani permintaan formulir yang dikirimkan.
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; }
}
}
Di komponen sebelumnya StarshipPlainForm :
- Form dirender di tempat elemen
<form>muncul. Formulir dinamai dengan atribut direktif@formname, yang secara unik mengidentifikasi formulir ke Blazor kerangka kerja. - Model dibuat dalam blok dari komponen
@codedan disimpan dalam propertipublic(Model). Atribut[SupplyParameterFromForm]menunjukkan bahwa nilai properti terkait harus disediakan dari data formulir. Data dalam permintaan yang cocok dengan nama properti akan terikat pada properti tersebut. - Komponen InputText adalah komponen input untuk mengedit nilai string. Atribut direktif
@bind-Valuemenghubungkan properti modelModel.Idke properti InputText dalam komponen Value. - Metode
Submitterdaftar sebagai handler untuk panggilan balik@onsubmit. Handler dipanggil ketika formulir dikirimkan oleh pengguna.
Penting
Selalu gunakan atribut direktif @formname dengan nama formulir yang unik.
Blazor meningkatkan navigasi halaman dan penanganan formulir dengan mencegat permintaan untuk menerapkan respons ke DOM yang ada, mempertahankan sebanyak mungkin formulir yang dirender. Peningkatan menghindari kebutuhan untuk sepenuhnya memuat halaman dan memberikan pengalaman pengguna yang jauh lebih lancar, mirip dengan aplikasi satu halaman (SPA), meskipun komponen dirender di server. Untuk informasi selengkapnya, lihat navigasi ASP.NET Core Blazor.
Penyajian streaming didukung untuk formulir HTML biasa. Perhatikan bahwa ketika POST suatu formulir, hanya pembaruan DOM di dalam penangan formulir yang dialirkan (misalnya, @onsubmit). Pembaruan di dalam OnInitializedAsync hanya dialirkan untuk permintaan GET. Untuk informasi selengkapnya, lihat Izinkan streaming fase pemuatan respons POST (dotnet/aspnetcore #50994).
Catatan
Tautan dokumentasi ke sumber referensi .NET biasanya memuat cabang default repositori, yang mewakili pengembangan saat ini untuk rilis .NET berikutnya. Untuk memilih tag untuk rilis spesifik, gunakan menu tarik turun Beralih cabang atau tag. Untuk informasi selengkapnya, lihat Cara memilih tag versi kode sumber ASP.NET Core (dotnet/AspNetCore.Docs #26205).
Contoh sebelumnya mencakup dukungan antiforgery dengan menyertakan komponen AntiforgeryToken dalam formulir. Dukungan antiforgery dijelaskan lebih lanjut di bagian Dukungan Antiforgery dari artikel ini.
Untuk mengirimkan formulir berdasarkan peristiwa DOM elemen lain, misalnya oninput atau onblur, gunakan JavaScript untuk mengirimkan formulir (submit).
Alih-alih menggunakan formulir biasa dalam aplikasi Blazor, formulir biasanya didefinisikan dengan dukungan formulir bawaan Blazor menggunakan komponen EditForm dari framework. Komponen berikut Razor menunjukkan elemen, komponen, dan Razor kode umum untuk merender formulir web dengan menggunakan komponen EditForm.
Formulir didefinisikan menggunakan komponen Blazor dari kerangka EditForm. Komponen berikut Razor menunjukkan elemen, komponen, dan Razor kode umum untuk merender formulir web dengan menggunakan komponen EditForm.
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; }
}
}
Di komponen sebelumnya Starship1 :
- Komponen EditForm dirender di mana elemen
<EditForm>muncul. Formulir dinamai dengan properti FormName, yang secara unik mengidentifikasi formulir ke kerangka kerja Blazor. - Model dibuat dalam blok dari komponen
@codedan disimpan dalam propertipublic(Model). Properti ditetapkan pada parameter EditForm.Model. Atribut[SupplyParameterFromForm]menunjukkan bahwa nilai properti terkait harus disediakan dari data formulir. Data dalam permintaan yang cocok dengan nama properti akan terikat pada properti tersebut. - Komponen InputText adalah komponen input untuk mengedit nilai string. Atribut direktif
@bind-Valuemenghubungkan properti modelModel.Idke properti InputText dalam komponen Value. - Metode
Submitini terdaftar sebagai handler untuk OnSubmit panggilan balik. Handler dipanggil ketika formulir dikirimkan oleh pengguna.
Penting
Selalu gunakan properti FormName dengan nama formulir yang unik.
Blazor meningkatkan navigasi halaman dan penanganan formulir untuk EditForm komponen. Untuk informasi selengkapnya, lihat navigasi ASP.NET Core Blazor.
Penyajian streaming didukung untuk EditForm. Perhatikan bahwa ketika POST suatu formulir, hanya pembaruan DOM di dalam penangan formulir yang dialirkan (misalnya, OnValidSubmit). Pembaruan di dalam OnInitializedAsync hanya dialirkan untuk permintaan GET. Untuk informasi selengkapnya, lihat Izinkan streaming fase pemuatan respons POST (dotnet/aspnetcore #50994).
Catatan
Tautan dokumentasi ke sumber referensi .NET biasanya memuat cabang default repositori, yang mewakili pengembangan saat ini untuk rilis .NET berikutnya. Untuk memilih tag untuk rilis spesifik, gunakan menu tarik turun Beralih cabang atau tag. Untuk informasi selengkapnya, lihat Cara memilih tag versi kode sumber 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; }
}
}
Di komponen sebelumnya Starship1 :
- Komponen EditForm dirender di mana elemen
<EditForm>muncul. - Model dibuat di blok komponen
@codedan disimpan di bidang privat (model). Bidang ditetapkan ke parameter EditForm.Model. - Komponen InputText adalah komponen input untuk mengedit nilai string. Properti model
@bind-Valuediikat oleh atributModel.Iddirektif ke properti InputText milik komponen Value †. - Metode
Submitini terdaftar sebagai handler untuk OnSubmit panggilan balik. Handler dipanggil ketika formulir dikirimkan oleh pengguna.
†Untuk informasi selengkapnya tentang pengikatan properti, lihat pengikatan data ASP.NET Core Blazor.
Dalam contoh berikutnya, komponen sebelumnya dimodifikasi untuk membuat formulir dalam Starship2 komponen:
- OnSubmit diganti dengan OnValidSubmit, yang memproses penanganan aktivitas yang ditetapkan jika formulir valid saat dikirimkan oleh pengguna.
- Komponen ValidationSummary ditambahkan untuk menampilkan pesan validasi ketika formulir tidak valid pada pengiriman formulir.
- Validator anotasi data (DataAnnotationsValidator komponen†) melampirkan dukungan validasi menggunakan anotasi data:
-
<input>Jika bidang formulir dibiarkan kosong saat tombolSubmitdipilih, kesalahan muncul di ringkasan validasi (ValidationSummary komponen‡) ("The Id field is required.") danSubmittidak dipanggil. -
<input>Jika bidang formulir berisi lebih dari sepuluh karakter saat tombolSubmitdipilih, kesalahan muncul di ringkasan validasi ("Id is too long.").Submittidak dipanggil. -
<input>Jika bidang formulir berisi nilai yang valid saat tombolSubmitdipilih,Submitdipanggil.
-
† Komponen DataAnnotationsValidator ini tercakup di bagian komponen Validator. ‡Komponen ValidationSummary dibahas dalam bagian Ringkasan Validasi dan Komponen Pesan Validasi.
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; }
}
}
Menangani pengiriman formulir
EditForm menyediakan panggilan balik berikut untuk menangani pengiriman formulir:
- Gunakan OnValidSubmit untuk menetapkan penanganan aktivitas untuk dijalankan saat formulir dengan bidang yang valid dikirimkan.
- Gunakan OnInvalidSubmit untuk menetapkan penanganan aktivitas untuk dijalankan saat formulir dengan bidang yang tidak valid dikirimkan.
- Gunakan OnSubmit untuk menetapkan penanganan aktivitas untuk dijalankan terlepas dari status validasi bidang formulir. Formulir divalidasi dengan memanggil EditContext.Validate dalam metode penanganan aktivitas. Jika Validate mengembalikan
true, formulir valid.
Menghapus formulir atau bidang
Reset formulir dengan menghapus modelnya hingga kembali ke status default, yang dapat dilakukan di dalam atau di luar EditForm markup:
<button @onclick="ClearForm">Clear form</button>
...
private void ClearForm() => Model = new();
Atau, gunakan ekspresi eksplisit Razor :
<button @onclick="@(() => Model = new())">Clear form</button>
Reset bidang dengan menghapus nilai modelnya kembali ke status defaultnya:
<button @onclick="ResetId">Reset Identifier</button>
...
private void ResetId() => Model!.Id = string.Empty;
Atau, gunakan ekspresi eksplisit Razor :
<button @onclick="@(() => Model!.Id = string.Empty)">Reset Identifier</button>
Tidak perlu memanggil StateHasChanged dalam contoh-contoh sebelumnya karena StateHasChanged secara otomatis dipanggil oleh kerangka kerja Blazor untuk merender kembali komponen setelah pengendali kejadian dipanggil. Jika penanganan aktivitas tidak digunakan untuk memanggil metode yang menghapus formulir atau bidang, maka kode pengembang harus memanggil StateHasChanged untuk merender komponen.
Dukungan antipemalsuan
Layanan anti-pemalsuan secara otomatis ditambahkan ke aplikasi Blazor saat dipanggil dalam berkas AddRazorComponents dengan Program.
Aplikasi ini menggunakan Antiforgery Middleware dengan memanggil UseAntiforgery dalam alur pemrosesan permintaannya dalam Program file.
UseAntiforgery dipanggil setelah panggilan ke UseRouting. Jika ada panggilan ke UseRouting dan UseEndpoints, panggilan ke UseAntiforgery harus berada di antara mereka. Panggilan ke UseAntiforgery harus dilakukan setelah panggilan ke UseAuthentication dan UseAuthorization.
Komponen AntiforgeryToken merender token antiforgery sebagai bidang tersembunyi, sedangkan atribut [RequireAntiforgeryToken] memungkinkan perlindungan antiforgery. Jika pemeriksaan antiforgery gagal, 400 - Bad Request respons akan dihasilkan dan formulir tidak diproses.
Untuk formulir yang berdasarkan EditForm, komponen AntiforgeryToken dan atribut [RequireAntiforgeryToken] secara otomatis ditambahkan untuk memberikan perlindungan anti-pemalsuan.
Untuk formulir berdasarkan elemen HTML <form> , tambahkan AntiforgeryToken komponen secara manual ke formulir:
<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;
}
Peringatan
Untuk formulir berdasarkan EditForm atau elemen HTML <form>, perlindungan antiforgery dapat dinonaktifkan dengan meneruskan required: false ke atribut [RequireAntiforgeryToken]. Contoh di bawah ini menonaktifkan fitur antiforgery dan tidak disarankan untuk aplikasi publik:
@using Microsoft.AspNetCore.Antiforgery
@attribute [RequireAntiforgeryToken(required: false)]
Untuk informasi selengkapnya, lihat autentikasi dan otorisasi ASP.NET Core Blazor.
Mengurangi serangan publikasi berlebihan
Formulir sisi server yang dirender secara statis, seperti yang biasanya digunakan dalam komponen yang membuat dan mengedit rekaman dalam basis data dengan model formulir, dapat rentan terhadap serangan overposting, juga dikenal sebagai serangan penugasan massal. Serangan overposting terjadi ketika pengguna berbahaya mengirimkan permintaan POST melalui formulir HTML ke server yang memproses data untuk properti yang bukan bagian dari formulir yang ditampilkan dan yang pengembang tidak ingin pengguna modifikasi. Istilah "overposting" secara harfiah berarti bahwa pengguna jahat telah melakukan POST berlebihan dengan menggunakan formulir.
Overposting bukan masalah ketika model tidak menyertakan properti terbatas untuk operasi membuat dan memperbarui. Namun, penting untuk mengingat kemungkinan posting berlebihan saat bekerja dengan formulir SSR statis yang berbasis Blazor yang Anda pertahankan.
Untuk mengurangi overposting, sebaiknya gunakan model tampilan terpisah/objek transfer data (DTO) untuk formulir dan database dengan operasi buat (sisipkan) dan perbarui. Saat formulir dikirimkan, hanya properti model tampilan/DTO yang digunakan oleh komponen dan kode C# untuk memodifikasi database. Setiap data tambahan yang disertakan oleh pengguna berbahaya dibuang, sehingga pengguna berbahaya dicegah melakukan serangan overposting.
Peningkatan dalam penanganan formulir
Tingkatkan navigasi untuk permintaan POST formulir dengan Enhance parameter untuk EditForm formulir atau data-enhance atribut untuk formulir HTML (<form>):
<EditForm ... Enhance ...>
...
</EditForm>
<form ... data-enhance ...>
...
</form>
Tidak didukung: Anda tidak dapat mengatur navigasi yang ditingkatkan pada elemen leluhur formulir untuk mengaktifkan penanganan formulir yang ditingkatkan.
<div ... data-enhance ...>
<form ...>
<!-- NOT enhanced -->
</form>
</div>
Posting formulir yang disempurnakan hanya berfungsi dengan Blazor titik akhir. Memposting formulir yang disempurnakan ke endpoint non-Blazor menyebabkan kesalahan.
Untuk menonaktifkan penanganan formulir yang ditingkatkan:
- Hapus parameter EditForm dari elemen formulir (atau atur menjadi Enhance:
false). - Untuk HTML
<form>, hapusdata-enhanceatribut dari elemen formulir (atau atur kefalse:data-enhance="false").
BlazorNavigasi dan penanganan formulir yang disempurnakan dapat membatalkan perubahan dinamis pada DOM jika konten yang diperbarui bukan bagian dari penyajian server. Untuk mempertahankan konten elemen, gunakan data-permanent atribut .
Dalam contoh berikut, konten dari elemen <div> diperbarui secara dinamis oleh skrip saat halaman dimuat.
<div data-permanent>
...
</div>
Untuk menonaktifkan navigasi dan penanganan formulir yang disempurnakan secara global, lihat startup ASP.NET Core Blazor.
Untuk panduan tentang menggunakan peristiwa enhancedload untuk mendengarkan pembaruan halaman yang ditingkatkan, lihat navigasi ASP.NET Core Blazor.
Contoh
Contoh tidak menggunakan penanganan formulir yang ditingkatkan untuk permintaan POST form, tetapi semua contoh dapat diperbarui dengan mengikuti panduan di bagian Penanganan formulir yang ditingkatkan agar dapat mengadopsi fitur yang ditingkatkan.
Contohnya menggunakan new operator:
public ShipDescription ShipDescription { get; set; } = new();
Jika menggunakan C# 8 atau yang lebih lama (ASP.NET Core 3.1), ubah kode contoh untuk menyatakan jenis ke operator new:
public ShipDescription ShipDescription { get; set; } = new ShipDescription();
Komponen menggunakan jenis referensi nullable (NRT), dan pengkompilasi .NET melakukan analisis statis status null, yang keduanya didukung dalam .NET 6 atau yang lebih baru. Untuk informasi selengkapnya, lihat Migrate dari ASP.NET Core di .NET 5 hingga .NET 6.
Jika menggunakan C# 9 atau yang lebih lama (.NET 5 atau yang lebih lama), hapus NRT dari contoh. Biasanya, ini hanya melibatkan penghapusan tanda tanya (?) dan tanda seru (!) dari jenis dalam kode contoh.
SDK .NET menerapkan arahan using global implisit ke proyek saat menargetkan .NET 6 atau yang lebih baru. Contoh menggunakan pencatat untuk mencatat informasi tentang pemrosesan formulir, tetapi tidak perlu menentukan direktif @using untuk namespace Microsoft.Extensions.Logging dalam contoh komponen. Untuk informasi selengkapnya, lihat SDK proyek .NET: Implisit menggunakan direktif.
Jika menggunakan C# 9 atau yang lebih lama (.NET 5 atau yang lebih lama), tambahkan arahan @using ke bagian atas komponen setelah arahan @page untuk API apa pun yang diperlukan oleh contoh. Temukan namespace API melalui Visual Studio (klik kanan objek dan pilih definisi Peek) atau browser API .NET.
Untuk mendemonstrasikan cara kerja formulir dengan validasi data annotations, komponen contoh bergantung pada System.ComponentModel.DataAnnotations API. Jika Anda ingin menghindari baris kode tambahan dalam komponen yang menggunakan anotasi data, buat namespace tersedia di seluruh komponen aplikasi dengan menggunakan file import (_Imports.razor):
@using System.ComponentModel.DataAnnotations
Contoh formulir mengacu pada aspek alam semesta Star Trek. Star Trek adalah hak cipta ©1966-2023 dari CBS Studios dan Paramount.
Validasi sisi klien memerlukan sirkuit
Dalam Blazor Web Apphal ini, validasi sisi klien memerlukan sirkuit yang aktif BlazorSignalR. Validasi sisi klien tidak tersedia untuk formulir dalam komponen yang telah mengadopsi penyajian sisi server statis (SSR statis). Formulir yang mengadopsi SSR statis divalidasi di server setelah formulir dikirimkan.
Validasi sisi klien dalam formulir SSR statis
Dalam Blazor Web App, formulir dalam komponen yang mengadopsi perenderan statis di sisi server (SSR statis) secara otomatis memperoleh validasi di sisi klien saat komponen DataAnnotationsValidator terdapat dalam formulir. Untuk detailnya, lihat validasi formulir ASP.NET Core Blazor.
Fitur validasi yang tidak didukung
Semua validator bawaan dari anotasi data didukung dalam , kecuali atribut validasi Blazor.
Validasi jQuery tidak didukung dalam Razor komponen. Kami merekomendasikan salah satu pendekatan berikut:
- Ikuti panduan dalam validasi formulir ASP.NET Core Blazor untuk salah satu skenario berikut:
- Validasi sisi server dalam Blazor Web App yang mengadopsi mode render interaktif.
- Validasi sisi klien dalam bentuk SSR statis.
- Validasi di sisi klien dalam aplikasi mandiri Blazor WebAssembly.
- Gunakan atribut validasi HTML asli (lihat validasi formulir sisi klien).
- Mengadopsi pustaka JavaScript validasi pihak ketiga.
- Ikuti panduan dalam validasi formulir ASP.NET Core Blazor untuk:
- Validasi sisi server dalam Blazor Web App yang mengadopsi mode render interaktif.
- Validasi di sisi klien dalam aplikasi mandiri Blazor WebAssembly.
- Gunakan atribut validasi HTML asli (lihat validasi formulir sisi klien).
- Mengadopsi pustaka JavaScript validasi pihak ketiga.
Sumber Daya Tambahan:
- unggahan file ASP.NET Core Blazor
- Amankan aplikasi ASP.NET Core Blazor WebAssembly yang dihosting dengan Microsoft Entra ID
- Amankan aplikasi ASP.NET Core Blazor WebAssembly yang dihosting dengan Azure Active Directory B2C
- Amankan aplikasi ASP.NET Core Blazor WebAssembly yang dihosting dengan Identity Server
-
Blazor sampel GitHub repositorium (
dotnet/blazor-samples) (cara mengunduh) - repositori ASP.NET Core GitHub (
dotnet/aspnetcore) membentuk aset pengujian
ASP.NET Core