gpt4 book ai didi

blazor - 带有 Blazorise 的 asp.net core 3.1 不使用 ValidateAll() 重置验证

转载 作者:行者123 更新时间:2023-12-05 07:18:06 31 4
gpt4 key购买 nike

我正在使用 Blazorise Bootstrap 创建 Blazor 客户端应用。

在我的代码中,我有一个 POCO 上的基本 CRUD 弹出窗口。我正在使用 Blazorise 验证来执行字段要求;

Blazorise Validation Documentation

现在我遇到的问题是我的弹出窗口可重复用于添加和编辑 POCO(来自数据网格)。我将验证绑定(bind)到一个引用,如下所示;

               <Validations @ref="companyValidations" Mode="ValidationMode.Auto">
<Fields>
<Field IsHorizontal="true" ColumnSize="ColumnSize.Is5.OnDesktop">
<Validation Validator="@ValidationRule.IsNotEmpty">
<FieldLabel ColumnSize="ColumnSize.Is3.OnDesktop">Company</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is9.OnDesktop">
<TextEdit @bind-Text="@Company.Name" Placeholder="Enter the Company Name..">
<Feedback>
<ValidationError>Please enter a Name for the Company!</ValidationError>
</Feedback>
</TextEdit>
</FieldBody>
</Validation>
</Field>

<Field IsHorizontal="true" ColumnSize="ColumnSize.Is5.OnDesktop">
<Validation Validator="@ValidationRule.IsNotEmpty">
<FieldLabel ColumnSize="ColumnSize.Is3.OnDesktop">Website</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is9.OnDesktop">
<TextEdit @bind-Text="@Company.Website" Placeholder="Enter the Web Address..">
<Feedback>
<ValidationError>Please enter a Website Address for the Company!</ValidationError>
</Feedback>
</TextEdit>
</FieldBody>
</Validation>
</Field>
</Fields>
</Validations>

Validations companyValidations = new Validations();

在我的代码部分。这第一次工作正常,但是,如果我随后重用该组件并重置 Company 实例,是否会显示之前的验证?例如,我会加载弹出窗口并输入有效的 Company.NameCompany.Email。然后我会重新加载弹出窗口并使用 Company = new Company(); 清除文本框,但由于某种原因调用 companyValidations.ValidateAll() 仍然返回 true ?

为了完成,我通过组件上的公共(public)方法来完成;

public void Reset()
{
Company = new CompanyInputModel();

companyValidations.ValidateAll();
companyValidations.ClearAll();
StateHasChanged();
}

我已经尝试过订单,但是,当我重置绑定(bind)模型时,我似乎无法将验证重置为“刷新”??

我已尝试将 hte ValidationMode 设置为 Validation.AutoValidation.Manual 但问题仍然存在?

最佳答案

我相信 Blazorise 验证组件会将您的验证数据保存到您的 companyValidations 中,因此请重新初始化您的 companyValidation 并再次检查。

public void Reset()
{
Company = new CompanyInputModel();
Validations companyValidations = new Validations(); // reinitialize validations

companyValidations.ValidateAll();
companyValidations.ClearAll();
StateHasChanged();
}

关于blazor - 带有 Blazorise 的 asp.net core 3.1 不使用 ValidateAll() 重置验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58501058/

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