asp.net 核心 3.1 与 Blazorise 不重置验证与 ValidateAll()



我正在使用Blazorise Bootstrap创建一个Blazor客户端应用程序。

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

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.NameCompany.Email.然后我会重新加载弹出窗口并使用清除文本框的Company = new Company();重置,但由于某种原因,调用companyValidations.ValidateAll()仍然返回 true?

为了完成,我通过组件上的公共方法来执行此操作;

public void Reset()
{
Company = new CompanyInputModel();      
companyValidations.ValidateAll();
companyValidations.ClearAll();     
StateHasChanged();
}

我已经玩过顺序,但是,当我重置绑定模型时,我似乎无法将验证重置为"刷新"??

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

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

public void Reset()
{
Company = new CompanyInputModel();      
Validations companyValidations = new Validations(); // reinitialize validations
companyValidations.ValidateAll();
companyValidations.ClearAll();     
StateHasChanged();
}

相关内容

  • 没有找到相关文章

最新更新