Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megjegyzés:
Ez nem a cikk legújabb verziója. Az aktuális kiadásról a cikk .NET 10-es verziójában olvashat.
Figyelmeztetés
A ASP.NET Core ezen verziója már nem támogatott. További információt a .NET és a .NET Core támogatási szabályzatában talál. A jelen cikk .NET 9-es verzióját lásd az aktuális kiadásért .
Ez a cikk a beépített bemeneti összetevőket ismerteti Blazor.
Bemeneti összetevők
A Blazor keretrendszer beépített bemeneti összetevőket biztosít a felhasználói bemenetek fogadásához és ellenőrzéséhez. Az alábbi táblázatban szereplő beépített bemeneti összetevők támogatottak egy EditForm-ben egy EditContext-el együtt.
A táblázat összetevőit a formán kívül is támogatja az Razor összetevőjelölés. A bemenetek akkor lesznek érvényesítve, amikor módosítják őket, és mikor küldik el az űrlapot.
| Bemeneti összetevő | Megjelenítve, mint... |
|---|---|
| InputCheckbox | <input type="checkbox"> |
| InputDate<TValue> | <input type="date"> |
| InputFile | <input type="file"> |
| InputNumber<TValue> | <input type="number"> |
| InputRadio<TValue> | <input type="radio"> |
| InputRadioGroup<TValue> | Gyermekcsoport InputRadio<TValue> |
| InputSelect<TValue> | <select> |
| InputText | <input> |
| InputTextArea | <textarea> |
További információ az InputFile összetevőről: ASP.NET Core-fájlfeltöltésekBlazor.
| Bemeneti összetevő | Megjelenítve, mint... |
|---|---|
| InputCheckbox | <input type="checkbox"> |
| InputDate<TValue> | <input type="date"> |
| InputNumber<TValue> | <input type="number"> |
| InputSelect<TValue> | <select> |
| InputText | <input> |
| InputTextArea | <textarea> |
Megjegyzés:
InputRadio<TValue> és InputRadioGroup<TValue> az összetevők a .NET 5-ös vagy újabb verzióiban érhetők el. További információkért válassza ki a cikk .NET 5-ös vagy újabb verzióját.
Az összes bemeneti összetevő, beleértve a EditFormtetszőleges attribútumokat is támogatja. A renderelt HTML-elemhez minden olyan attribútum hozzáadódik, amely nem egyezik meg az összetevőparaméterrel.
A bemeneti összetevők alapértelmezett viselkedést biztosítanak egy mező módosításakor történő érvényesítéshez:
- Az űrlap EditContextbemeneti összetevői esetében az alapértelmezett érvényesítési viselkedés magában foglalja a mező CSS-osztályának frissítését, hogy az érvényesként vagy érvénytelenként tükrözze a mező állapotát a mögöttes HTML-elem érvényesítési stílusával.
- A nem rendelkező EditContextvezérlők esetében az alapértelmezett ellenőrzés az érvényes vagy érvénytelen állapotot tükrözi, de nem biztosít érvényesítési stílust a mögöttes HTML-elemhez.
Egyes összetevők hasznos elemzési logikát tartalmaznak. Például InputDate<TValue> és InputNumber<TValue> a nem elemezhető értékeket úgy kezelik, hogy ezeket érvényesítési hibaként regisztrálják. A null értékeket elfogadó típusok támogatják a célmező (például int? null értékű egész szám) null értékűségét is.
Az InputNumber<TValue> összetevő támogatja az type="range" attribútumot, amely olyan tartománybemenetet hoz létre, amely támogatja a modellkötést és az űrlapérvényesítést, amely általában csúszkaként vagy tárcsázóként jelenik meg szövegdoboz helyett:
<InputNumber @bind-Value="..." max="..." min="..." step="..." type="range" />
További információ az InputFile összetevőről: ASP.NET Core-fájlfeltöltésekBlazor.
Példaűrlap
A cikk számos példájában és más Forms-csomópontcikkekben használt alábbi Starship típus különböző tulajdonságokat határoz meg adatjegyzetekkel:
-
Idszükséges, mert RequiredAttribute meg van jelölve.Idlegalább egy, de legfeljebb 16 karakterből álló értéket igényel a StringLengthAttribute használatával. -
Descriptionnem kötelező, mert nincs megjelölve a RequiredAttribute-el. - A
Classificationhasználata kötelező. - A
MaximumAccommodationtulajdonság alapértelmezés szerint nulla, de 1 és 100 000 RangeAttributeközötti értéket igényel. -
IsValidatedDesignmegköveteli, hogy a tulajdonságnak legyen egytrueértéke, amely megfelel a kiválasztott állapotnak, ha a tulajdonság a felhasználói felületen (<input type="checkbox">) egy jelölőnégyzethez van kötve. -
ProductionDateDateTime egy és kötelező.
Starship.cs:
using System.ComponentModel.DataAnnotations;
namespace BlazorSample;
public class Starship
{
[Required]
[StringLength(16, ErrorMessage = "Identifier too long (16 character limit).")]
public string? Id { get; set; }
public string? Description { get; set; }
[Required]
public string? Classification { get; set; }
[Range(1, 100000, ErrorMessage = "Accommodation invalid (1-100000).")]
public int MaximumAccommodation { get; set; }
[Required]
[Range(typeof(bool), "true", "true", ErrorMessage = "Approval required.")]
public bool IsValidatedDesign { get; set; }
[Required]
public DateTime ProductionDate { get; set; }
}
using System.ComponentModel.DataAnnotations;
namespace BlazorSample;
public class Starship
{
[Required]
[StringLength(16, ErrorMessage = "Identifier too long (16 character limit).")]
public string? Id { get; set; }
public string? Description { get; set; }
[Required]
public string? Classification { get; set; }
[Range(1, 100000, ErrorMessage = "Accommodation invalid (1-100000).")]
public int MaximumAccommodation { get; set; }
[Required]
[Range(typeof(bool), "true", "true", ErrorMessage = "Approval required.")]
public bool IsValidatedDesign { get; set; }
[Required]
public DateTime ProductionDate { get; set; }
}
using System.ComponentModel.DataAnnotations;
public class Starship
{
[Required]
[StringLength(16, ErrorMessage = "Identifier too long (16 character limit).")]
public string? Id { get; set; }
public string? Description { get; set; }
[Required]
public string? Classification { get; set; }
[Range(1, 100000, ErrorMessage = "Accommodation invalid (1-100000).")]
public int MaximumAccommodation { get; set; }
[Required]
[Range(typeof(bool), "true", "true",
ErrorMessage = "This form disallows unapproved ships.")]
public bool IsValidatedDesign { get; set; }
[Required]
public DateTime ProductionDate { get; set; }
}
using System.ComponentModel.DataAnnotations;
public class Starship
{
[Required]
[StringLength(16, ErrorMessage = "Identifier too long (16 character limit).")]
public string? Id { get; set; }
public string? Description { get; set; }
[Required]
public string? Classification { get; set; }
[Range(1, 100000, ErrorMessage = "Accommodation invalid (1-100000).")]
public int MaximumAccommodation { get; set; }
[Required]
[Range(typeof(bool), "true", "true",
ErrorMessage = "This form disallows unapproved ships.")]
public bool IsValidatedDesign { get; set; }
[Required]
public DateTime ProductionDate { get; set; }
}
using System;
using System.ComponentModel.DataAnnotations;
public class Starship
{
[Required]
[StringLength(16, ErrorMessage = "Identifier too long (16 character limit).")]
public string Id { get; set; }
public string Description { get; set; }
[Required]
public string Classification { get; set; }
[Range(1, 100000, ErrorMessage = "Accommodation invalid (1-100000).")]
public int MaximumAccommodation { get; set; }
[Required]
[Range(typeof(bool), "true", "true",
ErrorMessage = "This form disallows unapproved ships.")]
public bool IsValidatedDesign { get; set; }
[Required]
public DateTime ProductionDate { get; set; }
}
using System;
using System.ComponentModel.DataAnnotations;
public class Starship
{
[Required]
[StringLength(16, ErrorMessage = "Identifier too long (16 character limit).")]
public string Id { get; set; }
public string Description { get; set; }
[Required]
public string Classification { get; set; }
[Range(1, 100000, ErrorMessage = "Accommodation invalid (1-100000).")]
public int MaximumAccommodation { get; set; }
[Required]
[Range(typeof(bool), "true", "true",
ErrorMessage = "This form disallows unapproved ships.")]
public bool IsValidatedDesign { get; set; }
[Required]
public DateTime ProductionDate { get; set; }
}
Az alábbi űrlap a következő módon fogadja el és ellenőrzi a felhasználói bemenetet:
- Az előző modellben definiált
Starshiptulajdonságok és ellenőrzés. - Blazor számos beépített bemeneti összetevője.
Ha be van állítva a hajó besorolásának (Classification) modelltulajdonsága, a rendszer ellenőrzi a modellnek megfelelő beállítást. Például checked="@(Model!.Classification == "Exploration")" egy felderítő hajó besorolásához. Az bejelölt beállítás explicit beállításának oka, hogy egy <select> elem értéke csak a böngészőben található meg. Ha az űrlap az elküldése után jelenik meg a kiszolgálón, az ügyfél minden állapota felül lesz bírálva a kiszolgáló állapotával, amely általában nem jelöl meg bejelöltként egy beállítást. A modelltulajdonság ellenőrzött beállításának beállításával a besorolás mindig a modell állapotát tükrözi. Ez megőrzi a besorolási kijelölést az űrlapbeküldések között, amelyek az űrlap újrarendezését eredményezik a kiszolgálón. Olyan helyzetekben, amikor az űrlap nem lesz újrarendelve a kiszolgálón, például amikor az interaktív kiszolgáló renderelési módja közvetlenül az összetevőre van alkalmazva, nem szükséges explicit módon hozzárendelni az ellenőrzött beállítást a modellből, mert Blazor megőrzi az ügyfél elemének <select> állapotát.
Starship3.razor:
@page "/starship-3"
@inject ILogger<Starship3> Logger
<h1>Starfleet Starship Database</h1>
<h2>New Ship Entry Form</h2>
<EditForm Model="Model" OnValidSubmit="Submit" FormName="Starship3">
<DataAnnotationsValidator />
<ValidationSummary />
<div>
<label>
Identifier:
<InputText @bind-Value="Model!.Id" />
</label>
</div>
<div>
<label>
Description (optional):
<InputTextArea @bind-Value="Model!.Description" />
</label>
</div>
<div>
<label>
Primary Classification:
<InputSelect @bind-Value="Model!.Classification">
<option value="">
Select classification ...
</option>
<option checked="@(Model!.Classification == "Exploration")"
value="Exploration">
Exploration
</option>
<option checked="@(Model!.Classification == "Diplomacy")"
value="Diplomacy">
Diplomacy
</option>
<option checked="@(Model!.Classification == "Defense")"
value="Defense">
Defense
</option>
</InputSelect>
</label>
</div>
<div>
<label>
Maximum Accommodation:
<InputNumber @bind-Value="Model!.MaximumAccommodation" />
</label>
</div>
<div>
<label>
Engineering Approval:
<InputCheckbox @bind-Value="Model!.IsValidatedDesign" />
</label>
</div>
<div>
<label>
Production Date:
<InputDate @bind-Value="Model!.ProductionDate" />
</label>
</div>
<div>
<button type="submit">Submit</button>
</div>
</EditForm>
@code {
[SupplyParameterFromForm]
private Starship? Model { get; set; }
protected override void OnInitialized() =>
Model ??= new() { ProductionDate = DateTime.UtcNow };
private void Submit()
{
Logger.LogInformation("Id = {Id} Description = {Description} " +
"Classification = {Classification} MaximumAccommodation = " +
"{MaximumAccommodation} IsValidatedDesign = " +
"{IsValidatedDesign} ProductionDate = {ProductionDate}",
Model?.Id, Model?.Description, Model?.Classification,
Model?.MaximumAccommodation, Model?.IsValidatedDesign,
Model?.ProductionDate);
}
}
@page "/starship-3"
@inject ILogger<Starship3> Logger
<h1>Starfleet Starship Database</h1>
<h2>New Ship Entry Form</h2>
<EditForm Model="Model" OnValidSubmit="Submit" FormName="Starship3">
<DataAnnotationsValidator />
<ValidationSummary />
<div>
<label>
Identifier:
<InputText @bind-Value="Model!.Id" />
</label>
</div>
<div>
<label>
Description (optional):
<InputTextArea @bind-Value="Model!.Description" />
</label>
</div>
<div>
<label>
Primary Classification:
<InputSelect @bind-Value="Model!.Classification">
<option value="">
Select classification ...
</option>
<option checked="@(Model!.Classification == "Exploration")"
value="Exploration">
Exploration
</option>
<option checked="@(Model!.Classification == "Diplomacy")"
value="Diplomacy">
Diplomacy
</option>
<option checked="@(Model!.Classification == "Defense")"
value="Defense">
Defense
</option>
</InputSelect>
</label>
</div>
<div>
<label>
Maximum Accommodation:
<InputNumber @bind-Value="Model!.MaximumAccommodation" />
</label>
</div>
<div>
<label>
Engineering Approval:
<InputCheckbox @bind-Value="Model!.IsValidatedDesign" />
</label>
</div>
<div>
<label>
Production Date:
<InputDate @bind-Value="Model!.ProductionDate" />
</label>
</div>
<div>
<button type="submit">Submit</button>
</div>
</EditForm>
@code {
[SupplyParameterFromForm]
private Starship? Model { get; set; }
protected override void OnInitialized() =>
Model ??= new() { ProductionDate = DateTime.UtcNow };
private void Submit()
{
Logger.LogInformation("Id = {Id} Description = {Description} " +
"Classification = {Classification} MaximumAccommodation = " +
"{MaximumAccommodation} IsValidatedDesign = " +
"{IsValidatedDesign} ProductionDate = {ProductionDate}",
Model?.Id, Model?.Description, Model?.Classification,
Model?.MaximumAccommodation, Model?.IsValidatedDesign,
Model?.ProductionDate);
}
}
@page "/starship-3"
@inject ILogger<Starship3> Logger
<h1>Starfleet Starship Database</h1>
<h2>New Ship Entry Form</h2>
<EditForm Model="Model" OnValidSubmit="Submit">
<DataAnnotationsValidator />
<ValidationSummary />
<div>
<label>
Identifier:
<InputText @bind-Value="Model!.Id" />
</label>
</div>
<div>
<label>
Description (optional):
<InputTextArea @bind-Value="Model!.Description" />
</label>
</div>
<div>
<label>
Primary Classification:
<InputSelect @bind-Value="Model!.Classification">
<option value="">Select classification ...</option>
<option value="Exploration">Exploration</option>
<option value="Diplomacy">Diplomacy</option>
<option value="Defense">Defense</option>
</InputSelect>
</label>
</div>
<div>
<label>
Maximum Accommodation:
<InputNumber @bind-Value="Model!.MaximumAccommodation" />
</label>
</div>
<div>
<label>
Engineering Approval:
<InputCheckbox @bind-Value="Model!.IsValidatedDesign" />
</label>
</div>
<div>
<label>
Production Date:
<InputDate @bind-Value="Model!.ProductionDate" />
</label>
</div>
<div>
<button type="submit">Submit</button>
</div>
</EditForm>
@code {
private Starship? Model { get; set; }
protected override void OnInitialized() =>
Model ??= new() { ProductionDate = DateTime.UtcNow };
private void Submit()
{
Logger.LogInformation("Id = {Id} Description = {Description} " +
"Classification = {Classification} MaximumAccommodation = " +
"{MaximumAccommodation} IsValidatedDesign = " +
"{IsValidatedDesign} ProductionDate = {ProductionDate}",
Model?.Id, Model?.Description, Model?.Classification,
Model?.MaximumAccommodation, Model?.IsValidatedDesign,
Model?.ProductionDate);
}
}
Az EditForm előző példában a hozzárendelt EditContext példány (Starship) alapján hoz létre egy Model="..." példányt, és egy érvényes űrlapot kezel. A következő példa bemutatja, hogyan rendelhet hozzá egy EditContext űrlapot, és hogyan ellenőrizheti az űrlap elküldésekor.
Az alábbi példában:
- A rendszer a korábbi
Starfleet Starship Databaseűrlap (Starship3összetevő) rövidített verzióját használja, amely csak a csillaghajó azonosítójának értékét fogadja el. A többiStarshiptulajdonság érvényes alapértelmezett értékeket kap aStarshiptípuspéldány létrehozásakor. - A
Submitgomb kiválasztásakor aSubmitmetódus fut. - A(z) EditContext.Validate meghívásával az űrlapot a
Submitmetódusban érvényesítjük. - A naplózás az érvényesítési eredménytől függően lesz végrehajtva.
Starship4.razor:
@page "/starship-4"
@inject ILogger<Starship4> Logger
<EditForm EditContext="editContext" OnSubmit="Submit" FormName="Starship4">
<DataAnnotationsValidator />
<div>
<label>
Identifier:
<InputText @bind-Value="Model!.Id" />
</label>
</div>
<div>
<button type="submit">Submit</button>
</div>
</EditForm>
@code {
private EditContext? editContext;
[SupplyParameterFromForm]
private Starship? Model { get; set; }
protected override void OnInitialized()
{
Model ??=
new()
{
Id = "NCC-1701",
Classification = "Exploration",
MaximumAccommodation = 150,
IsValidatedDesign = true,
ProductionDate = new DateTime(2245, 4, 11)
};
editContext = new(Model);
}
private void Submit()
{
if (editContext != null && editContext.Validate())
{
Logger.LogInformation("Submit: Form is valid");
}
else
{
Logger.LogInformation("Submit: Form is INVALID");
}
}
}
@page "/starship-4"
@inject ILogger<Starship4> Logger
<EditForm EditContext="editContext" OnSubmit="Submit" FormName="Starship4">
<DataAnnotationsValidator />
<div>
<label>
Identifier:
<InputText @bind-Value="Model!.Id" />
</label>
</div>
<div>
<button type="submit">Submit</button>
</div>
</EditForm>
@code {
private EditContext? editContext;
[SupplyParameterFromForm]
private Starship? Model { get; set; }
protected override void OnInitialized()
{
Model ??=
new()
{
Id = "NCC-1701",
Classification = "Exploration",
MaximumAccommodation = 150,
IsValidatedDesign = true,
ProductionDate = new DateTime(2245, 4, 11)
};
editContext = new(Model);
}
private void Submit()
{
if (editContext != null && editContext.Validate())
{
Logger.LogInformation("Submit: Form is valid");
}
else
{
Logger.LogInformation("Submit: Form is INVALID");
}
}
}
@page "/starship-4"
@inject ILogger<Starship4> Logger
<EditForm EditContext="editContext" OnSubmit="Submit">
<DataAnnotationsValidator />
<div>
<label>
Identifier:
<InputText @bind-Value="Model!.Id" />
</label>
</div>
<div>
<button type="submit">Submit</button>
</div>
</EditForm>
@code {
private EditContext? editContext;
private Starship Model { get; set; }
protected override void OnInitialized()
{
Model ??=
new()
{
Id = "NCC-1701",
Classification = "Exploration",
MaximumAccommodation = 150,
IsValidatedDesign = true,
ProductionDate = new DateTime(2245, 4, 11)
};
editContext = new(Model);
}
private async Task Submit()
{
if (editContext != null && editContext.Validate())
{
Logger.LogInformation("Submit called: Form is valid");
// await ...
}
else
{
Logger.LogInformation("Submit called: Form is INVALID");
}
}
}
Megjegyzés:
A EditContext hozzárendelés utáni módosítás nem támogatott.
Több lehetőség kijelölése az InputSelect összetevővel
A kötés az multiple összetevővel támogatja a InputSelect<TValue> beállításválasztást. Az @onchange esemény eseményargumentumokon (ChangeEventArgs)keresztül biztosítja a kiválasztott lehetőségek tömbét. Az értéket tömbtípushoz kell kötni, ami azt eredményezi, hogy az InputSelect<TValue> összetevő automatikusan hozzáadja az multiple attribútumot az <select> elemhez az összetevő renderelésekor.
A következő példában a felhasználónak legalább két csillaghajó-besorolást kell kiválasztania, de legfeljebb három besorolást.
Starship5.razor:
@page "/starship-5"
@using System.ComponentModel.DataAnnotations
@inject ILogger<Starship5> Logger
<h1>Bind Multiple <code>InputSelect</code> Example</h1>
<EditForm EditContext="editContext" OnValidSubmit="Submit" FormName="Starship5">
<DataAnnotationsValidator />
<ValidationSummary />
<div>
<label>
Select classifications (Minimum: 2, Maximum: 3):
<InputSelect @bind-Value="Model!.SelectedClassification">
<option value="@Classification.Exploration">Exploration</option>
<option value="@Classification.Diplomacy">Diplomacy</option>
<option value="@Classification.Defense">Defense</option>
<option value="@Classification.Research">Research</option>
</InputSelect>
</label>
</div>
<div>
<button type="submit">Submit</button>
</div>
</EditForm>
@if (Model?.SelectedClassification?.Length > 0)
{
<div>@string.Join(", ", Model.SelectedClassification)</div>
}
@code {
private EditContext? editContext;
[SupplyParameterFromForm]
private Starship? Model { get; set; }
protected override void OnInitialized()
{
Model = new();
editContext = new(Model);
}
private void Submit() => Logger.LogInformation("Submit: Processing form");
private class Starship
{
[Required]
[MinLength(2, ErrorMessage = "Select at least two classifications.")]
[MaxLength(3, ErrorMessage = "Select no more than three classifications.")]
public Classification[]? SelectedClassification { get; set; } =
[ Classification.None ];
}
private enum Classification { None, Exploration, Diplomacy, Defense, Research }
}
@page "/starship-5"
@using System.ComponentModel.DataAnnotations
@inject ILogger<Starship5> Logger
<h1>Bind Multiple <code>InputSelect</code> Example</h1>
<EditForm EditContext="editContext" OnValidSubmit="Submit" FormName="Starship5">
<DataAnnotationsValidator />
<ValidationSummary />
<div>
<label>
Select classifications (Minimum: 2, Maximum: 3):
<InputSelect @bind-Value="Model!.SelectedClassification">
<option value="@Classification.Exploration">Exploration</option>
<option value="@Classification.Diplomacy">Diplomacy</option>
<option value="@Classification.Defense">Defense</option>
<option value="@Classification.Research">Research</option>
</InputSelect>
</label>
</div>
<div>
<button type="submit">Submit</button>
</div>
</EditForm>
@if (Model?.SelectedClassification?.Length > 0)
{
<div>@string.Join(", ", Model.SelectedClassification)</div>
}
@code {
private EditContext? editContext;
[SupplyParameterFromForm]
private Starship? Model { get; set; }
protected override void OnInitialized()
{
Model = new();
editContext = new(Model);
}
private void Submit() => Logger.LogInformation("Submit: Processing form");
private class Starship
{
[Required]
[MinLength(2, ErrorMessage = "Select at least two classifications.")]
[MaxLength(3, ErrorMessage = "Select no more than three classifications.")]
public Classification[]? SelectedClassification { get; set; } =
[ Classification.None ];
}
private enum Classification { None, Exploration, Diplomacy, Defense, Research }
}
@page "/starship-5"
@using System.ComponentModel.DataAnnotations
@inject ILogger<Starship5> Logger
<h1>Bind Multiple <code>InputSelect</code> Example</h1>
<EditForm EditContext="editContext" OnValidSubmit="Submit">
<DataAnnotationsValidator />
<ValidationSummary />
<div>
<label>
Select classifications (Minimum: 2, Maximum: 3):
<InputSelect @bind-Value="Model!.SelectedClassification">
<option value="@Classification.Exploration">Exploration</option>
<option value="@Classification.Diplomacy">Diplomacy</option>
<option value="@Classification.Defense">Defense</option>
<option value="@Classification.Research">Research</option>
</InputSelect>
</label>
</div>
<div>
<button type="submit">Submit</button>
</div>
</EditForm>
@if (Model?.SelectedClassification?.Length > 0)
{
<div>@string.Join(", ", Model.SelectedClassification)</div>
}
@code {
private EditContext? editContext;
private Starship? Model { get; set; }
protected override void OnInitialized()
{
Model ??= new();
editContext = new(Model);
}
private void Submit()
{
Logger.LogInformation("Submit called: Processing the form");
}
private class Starship
{
[Required]
[MinLength(2, ErrorMessage = "Select at least two classifications.")]
[MaxLength(3, ErrorMessage = "Select no more than three classifications.")]
public Classification[]? SelectedClassification { get; set; } =
new[] { Classification.None };
}
private enum Classification { None, Exploration, Diplomacy, Defense, Research }
}
Az üres sztringek és null értékek adatkötésben való kezeléséről a C# objektumértékek InputSelect kötési null beállításai című szakaszban tájékozódhat.
Kötési InputSelect beállítások C# objektum értékekhez null
Az üres sztringek és null értékek adatkötésben való kezeléséről az ASP.NET Alapvető Blazor adatkötés című témakörben olvashat bővebben.
Megjelenített név támogatása
Számos beépített összetevő támogatja a InputBase<TValue>.DisplayName paraméterrel rendelkező megjelenítendő neveket.
Starfleet Starship Database A Starship3 szakasz űrlapjában (összetevőjében) az új csillaghajó gyártási dátuma nem ad meg megjelenítendő nevet:
<label>
Production Date:
<InputDate @bind-Value="Model!.ProductionDate" />
</label>
Ha a mező érvénytelen dátumot tartalmaz az űrlap elküldésekor, a hibaüzenet nem jelenít meg barátságos nevet. A "ProductionDate" mezőnév nem rendelkezik szóközzel a "Production" és a "Date" között, amikor megjelenik az érvényesítési összegzésben:
A ProductionDate mezőnek dátumnak kell lennie.
Állítsa be a DisplayName tulajdonságot egy barátságos névre szóközzel az "Production" és "Date" szavak között.
<label>
Production Date:
<InputDate @bind-Value="Model!.ProductionDate"
DisplayName="Production Date" />
</label>
Az érvényesítési összegzés a barátságos nevet jeleníti meg, ha a mező értéke érvénytelen.
A Gyártási dátum mezőnek dátumnak kell lennie.
Hibaüzenetsablon támogatása
InputDate<TValue> és InputNumber<TValue> támogatási hibaüzenetsablonok:
A Starfleet Starship Database űrlap (Starship3 összetevő) a példaűrlap szakaszban, ahol egy felhasználóbarát megjelenítendő név van hozzárendelve, a Production Date mező az alábbi alapértelmezett hibaüzenetsablon használatával hoz létre hibaüzenetet:
The {0} field must be a date.
A helyőrző helye {0} az, ahol a DisplayName tulajdonság értéke látható, amikor a hiba megjelenik a felhasználó számára.
<label>
Production Date:
<InputDate @bind-Value="Model!.ProductionDate"
DisplayName="Production Date" />
</label>
A Gyártási dátum mezőnek dátumnak kell lennie.
Egyéni sablon hozzárendelése egyéni üzenet megadásához ParsingErrorMessage :
<label>
Production Date:
<InputDate @bind-Value="Model!.ProductionDate"
DisplayName="Production Date"
ParsingErrorMessage="The {0} field has an incorrect date value." />
</label>
A Gyártási dátum mező helytelen dátumértéket tartalmaz.
Starfleet Starship Database A Starship3 szakasz űrlapjában (összetevőjében) egy alapértelmezett hibaüzenetsablont használ:
The {0} field must be a date.
A helyőrző helye {0} az, ahol a DisplayName tulajdonság értéke látható, amikor a hiba megjelenik a felhasználó számára.
<label>
Production Date:
<InputDate @bind-Value="Model!.ProductionDate" />
</label>
A ProductionDate mezőnek dátumnak kell lennie.
Egyéni sablon hozzárendelése egyéni üzenet megadásához ParsingErrorMessage :
<label>
Production Date:
<InputDate @bind-Value="Model!.ProductionDate"
ParsingErrorMessage="The {0} field has an incorrect date value." />
</label>
A ProductionDate mező dátumértéke helytelen.
InputHidden összetevő az űrlapok rejtett beviteli mezőinek kezeléséhez
Az InputHidden összetevő egy rejtett beviteli mezőt biztosít a sztringértékek tárolásához.
Az alábbi példában egy rejtett beviteli mező jön létre az űrlap tulajdonságához Parameter . Az űrlap elküldésekor megjelenik a rejtett mező értéke:
<EditForm Model="Parameter" OnValidSubmit="Submit" FormName="InputHidden Example">
<InputHidden id="hidden" @bind-Value="Parameter" />
<button type="submit">Submit</button>
</EditForm>
@if (submitted)
{
<p>Hello @Parameter!</p>
}
@code {
private bool submitted;
[SupplyParameterFromForm]
public string Parameter { get; set; } = "stranger";
private void Submit() => submitted = true;
}