Blazor 验证未修改的表单
Blazor validate unmodified form
我想验证 Blazor 表单,即使用户没有更改任何表单字段的值。 (默认情况下,Blazor 仅在修改字段后对其进行验证。)
如何在不需要用户交互(编辑字段、单击按钮等)的情况下验证表单?我想在最初显示时验证表单。
这是我的代码:
@using System.ComponentModel.DataAnnotations
@page "/"
<EditForm Model="@formModel" Context="currentEditContext">
<DataAnnotationsValidator />
<p>
<label>My Text: <InputText @bind-Value="formModel.Text" /></label>
<ValidationMessage For="@(() => formModel.Text)" />
</p>
<p>Form valid: @currentEditContext.Validate()</p>
</EditForm>
@code
{
FormModel formModel = new();
private class FormModel
{
[Required]
public string Text { get; set; } = "";
}
}
我尝试在我的 EditContext
对象上使用各种方法,但其中 none 触发了验证。
editContext.Validate();
editContext.NotifyValidationStateChanged();
editContext.NotifyFieldChanged(editContext.Field("Text"));
我发现我可以在 OnAfterRender()
.
中通过 运行 editContext.Validate()
触发表单验证
此代码在加载页面后立即验证表单:
@using System.ComponentModel.DataAnnotations
@page "/"
<EditForm EditContext="editContext">
<DataAnnotationsValidator />
<p>
<label>My Text: <InputText @bind-Value="formModel.Text" /></label>
<ValidationMessage For="@(() => formModel.Text)" />
</p>
<p>Form valid: @(!editContext.GetValidationMessages().Any())</p>
</EditForm>
@code
{
FormModel formModel = new();
EditContext editContext;
private class FormModel
{
[Required]
public string Text { get; set; } = "";
}
protected override void OnInitialized()
{
editContext = new(formModel);
base.OnInitialized();
}
protected override void OnAfterRender(bool firstRender)
{
if (firstRender)
{
editContext.Validate();
StateHasChanged(); // Update the "Form valid" message
}
base.OnAfterRender(firstRender);
}
}
我想验证 Blazor 表单,即使用户没有更改任何表单字段的值。 (默认情况下,Blazor 仅在修改字段后对其进行验证。)
如何在不需要用户交互(编辑字段、单击按钮等)的情况下验证表单?我想在最初显示时验证表单。
这是我的代码:
@using System.ComponentModel.DataAnnotations
@page "/"
<EditForm Model="@formModel" Context="currentEditContext">
<DataAnnotationsValidator />
<p>
<label>My Text: <InputText @bind-Value="formModel.Text" /></label>
<ValidationMessage For="@(() => formModel.Text)" />
</p>
<p>Form valid: @currentEditContext.Validate()</p>
</EditForm>
@code
{
FormModel formModel = new();
private class FormModel
{
[Required]
public string Text { get; set; } = "";
}
}
我尝试在我的 EditContext
对象上使用各种方法,但其中 none 触发了验证。
editContext.Validate();
editContext.NotifyValidationStateChanged();
editContext.NotifyFieldChanged(editContext.Field("Text"));
我发现我可以在 OnAfterRender()
.
editContext.Validate()
触发表单验证
此代码在加载页面后立即验证表单:
@using System.ComponentModel.DataAnnotations
@page "/"
<EditForm EditContext="editContext">
<DataAnnotationsValidator />
<p>
<label>My Text: <InputText @bind-Value="formModel.Text" /></label>
<ValidationMessage For="@(() => formModel.Text)" />
</p>
<p>Form valid: @(!editContext.GetValidationMessages().Any())</p>
</EditForm>
@code
{
FormModel formModel = new();
EditContext editContext;
private class FormModel
{
[Required]
public string Text { get; set; } = "";
}
protected override void OnInitialized()
{
editContext = new(formModel);
base.OnInitialized();
}
protected override void OnAfterRender(bool firstRender)
{
if (firstRender)
{
editContext.Validate();
StateHasChanged(); // Update the "Form valid" message
}
base.OnAfterRender(firstRender);
}
}