我在 asp.net Web Forms 方面有著悠久的歷史,最近搬到了 Blazor,我很喜歡它!我正在 Blazor 中創建一些表單,并想知道 Blazor 是否像在 Web 表單中那樣具有 ValidationGroups。比如說我在一個頁面上有兩個表單,例如登錄表單和創建新帳戶表單(兩者都是相同的模型)。每個都有自己的按鈕。但我希望每個按鈕都驗證其欄位組,例如電子郵件有效,填充了必填欄位等......我看到必填欄位放在模型上,這很整潔。但在這種情況下,兩種表單都使用相同的模型并且位于同一頁面上。我是否對每個表單的按鈕單擊進行驗證 - 但這似乎生成了大量代碼并且有點混亂。Web Forms Groupa Validation 非常簡潔,您可以將控制元件組合在一起,包括提交按鈕。
TIA
uj5u.com熱心網友回復:
這是一個起點。這有一個模型實體,兩個表單都鏈接到它。驗證是表單的一部分,因此為每個表單單獨跟蹤。我已鏈接到同一欄位,但您可以將每個表單鏈接到同一模型中的不同欄位。
@page "/"
@using Microsoft.AspNetCore.Components;
@using Microsoft.AspNetCore.Components.Forms;
@using System.ComponentModel.DataAnnotations;
<h2>Login 1</h2>
<EditForm EditContext="this._editcontext1" OnValidSubmit="this.OnValidSubmit1">
<DataAnnotationsValidator />
<div >
<div >
User Name:
</div>
<div >
<InputText @bind-Value="this._model.UserName"></InputText>
</div>
<div >
<ValidationMessage For="() => this._model.UserName"></ValidationMessage>
</div>
</div>
<div >
<button type="submit">Submit</button>
</div>
</EditForm>
<h2>Login 2</h2>
<EditForm EditContext="this._editcontext2" OnValidSubmit="this.OnValidSubmit1">
<DataAnnotationsValidator />
<div >
<div >
User Name:
</div>
<div >
<InputText @bind-Value="this._model.UserName"></InputText>
</div>
<div >
<ValidationMessage For="() => this._model.UserName"></ValidationMessage>
</div>
</div>
<div >
<button type="submit">Submit</button>
</div>
</EditForm>
@code {
private EditContext? _editcontext1;
private EditContext? _editcontext2;
private Model _model = new Model();
protected override Task OnInitializedAsync()
{
_editcontext1 = new EditContext(_model);
_editcontext2 = new EditContext(_model);
return base.OnInitializedAsync();
}
private async Task OnValidSubmit1()
{
await Task.Delay(1000);
}
private async Task OnValidSubmit2()
{
await Task.Delay(1000);
}
class Model
{
[Required]
public string? UserName { get; set; }
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/377556.html
