3

可以使用 Blazor 中的 Fluent 验证来验证 MudBlazor 表单我遵循了文档中的相同代码:

  1. 创建通用FluentValueValidator
public FluentValueValidator(Action<IRuleBuilderInitial<T, T>> rule)
{
    rule(RuleFor(x => x));
}
  1. 该类的创建对象(例如dependencyLinkValidator
public FluentValueValidator<string> dependencyLinkValidator = new FluentValueValidator<string>(x => x
        .NotEmpty().WithMessage("{PropertyName} cannot be empty.").WithName("Link"));
  1. 将 Validator 属性的值放入dependencyLinkValidator
Validation="dependencyLinkValidator.Validation" 
  1. 当用户在文本框中键入新值时,表单会得到验证,但是当用户单击提交按钮时我也会调用 Form.Validate() 来验证表单中的所有控件
Form.Validate();

该示例很简单,即使使用自定义验证器也能完美运行,问题是,当我创建使用异步函数的自定义验证器时,验证不起作用。有什么方法可以异步调用 Form.Validate() 吗?

使用自定义异步验证器的示例:

 public FluentValueValidator<string> dependencyLinkValidator = new FluentValueValidator<string>(x => x
            .NotEmpty().WithMessage("{PropertyName} cannot be empty.")
            .MustAsync(async (x, cancellation) =>
            {
                return await AsyncFunction(x);
            }).WithMessage("Site doesn't exist")
            .WithName("Link"));
4

0 回答 0