Blazor WASM 中的可重用验证

时间:2020-12-30 12:21:57

标签: validation blazor-webassembly

请问有没有办法把下面的代码打包成可复用的组件。 该代码位于提交表单时 HandleValidSubmit 的事件处理程序中。

        _accountValidator.ClearErrors();
        if (!string.IsNullOrEmpty(SelectedAgreement.Account))
        {
            if (SelectedAgreement.ProvisionAccountTypeId == (int) ProvisionAccountTypeEnum.CD_IDENT &&
                SelectedAgreement.Account.Length != 5)
            {
                var errors = new Dictionary<string, List<string>>
                {
                    {
                        nameof(SelectedAgreement.Account),
                        new List<string> {"CD Ident requires a 5 digit account number"}
                    }
                };
                _accountValidator.DisplayErrors(errors);
                return false;
            }

            if (SelectedAgreement.ProvisionAccountTypeId == (int) ProvisionAccountTypeEnum.VP_Account &&
                SelectedAgreement.Account.Length > 15)
            {
                var errors = new Dictionary<string, List<string>>
                {
                    {
                        nameof(SelectedAgreement.Account),
                        new List<string> {"VP Account number has a max length of 15"}
                    }
                };
                _accountValidator.DisplayErrors(errors);
                return false;
            }
        }

我知道 fluent 验证,但我有很多使用数据属性的代码。

1 个答案:

答案 0 :(得分:1)

我认为您无法传递 CustomValidator (_accountValidator),因此我认为您对 ClearErrors 和 DisplayErrors 的调用必须保留在您的 CustomValidator 所在的组件中。

这并不意味着您不能将编辑模型“SelectedAgreement”发送到可重用的代码段,以将 Dictionary> 返回给您以显示在 CustomValidator 组件上。

一些附加信息:

https://docs.microsoft.com/en-us/aspnet/core/blazor/forms-validation?view=aspnetcore-5.0