在 C# 中的自定义验证属性中使用异步方法

Ham*_*eza 9 c# asp.net asynchronous custom-attributes asp.net-core

我有一个评估字段的异步方法。

Task<bool> MyMethod(object obj);
Run Code Online (Sandbox Code Playgroud)

我想创建一个使用上述方法的自定义验证属性。我的问题是该类ValidationAttribute不支持异步方法。

我通常重写以下方法:

ValidationResult IsValid (object? obj, ValidationContext validationContext);
Run Code Online (Sandbox Code Playgroud)

但我的异步方法的输出是Task<ValidationResult>,我不想使用同步方法。

您有解决方案或建议吗?

提示:由于I/O阻塞,我想使用异步方法。(没有 CPU 限制或繁重的操作。)

Zhi*_* Lv 8

在自定义验证属性中使用异步方法

验证管道不是异步的,因此不可能用于此目的。请参阅此类似线程

此外,众所周知,验证是为了确保类型和值的正确性,而不是评估字段等业务规则。这应该在您的业务/数据层中强制执行,您可以尝试使用 JQuery 验证或Remote attribute