可以使用 Blazor 中的 Fluent 验证来验证 MudBlazor 表单。我遵循了文档中的相同代码:
- 创建通用FluentValueValidator类
public FluentValueValidator(Action<IRuleBuilderInitial<T, T>> rule)
{
rule(RuleFor(x => x));
}
- 该类的创建对象(例如dependencyLinkValidator)
public FluentValueValidator<string> dependencyLinkValidator = new FluentValueValidator<string>(x => x
.NotEmpty().WithMessage("{PropertyName} cannot be empty.").WithName("Link"));
- 将 Validator 属性的值放入dependencyLinkValidator
Validation="dependencyLinkValidator.Validation"
- 当用户在文本框中键入新值时,表单会得到验证,但是当用户单击提交按钮时我也会调用 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"));