我正在使用 Blazorise Bootstrap 创建 Blazor 客户端应用程序。
在我的代码中,我有一个 POCO 上基本 CRUD 的弹出窗口。我正在使用 Blazorise 验证来强制执行字段要求;
现在我遇到的问题是我的弹出窗口可重复用于添加和编辑 POCO(来自数据网格)。我将验证绑定到引用,如下所示;
<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();
在我的Code
部分。这第一次工作正常,但是,如果我然后重用组件并重置Company
实例,是否会显示先前的验证?例如,我将加载弹出窗口并输入有效的Company.Name
and Company.Email
。然后我会重新加载弹出窗口并使用Company = new Company();
它清除文本框进行重置,但由于某种原因,调用companyValidations.ValidateAll()
仍然返回 true?
为了完成,我通过组件上的公共方法完成此操作;
public void Reset()
{
Company = new CompanyInputModel();
companyValidations.ValidateAll();
companyValidations.ClearAll();
StateHasChanged();
}
但是,我已经玩过订单了,当我重置绑定模型时,我似乎无法将验证重置为“刷新”?
我尝试将 hte 设置ValidationMode
为两者Validation.Auto
,Validation.Manual
但问题仍然存在?