3

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

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

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

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

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

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

4

1 回答 1

0

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

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

    companyValidations.ValidateAll();
    companyValidations.ClearAll();     
    StateHasChanged();
}
于 2020-06-13T17:33:20.507 回答