gpt4 book ai didi

asp.net - 仅在使用 Blazor 提交时验证表单

转载 作者:行者123 更新时间:2023-12-05 01:26:09 25 4
gpt4 key购买 nike

我最近开始使用 Blazor。有没有办法只在提交时触发表单模型验证,而不是在每次更改时都生效?

只是为了澄清,假设我有这样的事情:

<EditForm Model="this" OnValidSubmit="SubmitForm">
<DataAnnotationsValidator />
<ValidationSummary />
<Label For="Name">Name</Label>
<InputText id="Name" name="Name" class="form-control" @bind-Value="Name"/>
<button type="submit">Save</button>
</EditForm>

@code {
[StringLength(10, ErrorMessage="Name too long")]
public string Name { get; set; }

private async Task SubmitForm()
{
// ...
// send a POST request
}
}

默认情况下,似乎字段的有效性和 ValidationSummary 中显示的错误消息会在文本输入的每次更改时重新评估(例如,一旦我从输入中删除第 11 个字符,“太长”消息消失)。

我希望显示的消息在单击“提交”按钮之前保持卡住状态。

我想可以通过删除 ValidationSummary 组件并实现自定义解决方案(例如,显示仅在提交时刷新的错误消息列表)来实现它,但我想知道是否有一些惯用的解决方案我'我不知道。

最佳答案

何时进行验证由您使用的验证器控制。

您可以从 EditContext 接收两个事件:

OnValidationRequestedEditContext.Validate 被调用时或作为表单提交过程的一部分被调用。

OnFieldChanged 在每次更改字段值时调用。

验证器使用这些事件来触发它的验证过程,并将结果输出到 EditContext 的 ValidationMessageStore。

DataAnnotationsValidator 连接两个事件并在调用其中一个时触发验证。

还有其他验证器,编写您自己的验证器并不太难。除了来自通常的控制供应商的那些,还有 Blazored 或我的。我的记录在这里 - https://shauncurtis.github.io/articles/Blazor-Form-Validation.html .它有一个 DoValidationOnFieldChange 设置!

关于asp.net - 仅在使用 Blazor 提交时验证表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70420295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com