C# 在c中的自定义验证属性中使用异步方法#
我有一个计算字段的异步方法C# 在c中的自定义验证属性中使用异步方法#,c#,asp.net,asp.net-core,asynchronous,custom-attributes,C#,Asp.net,Asp.net Core,Asynchronous,Custom Attributes,我有一个计算字段的异步方法 Task<bool> MyMethod(object obj); 但是我的异步方法的输出是Task,我不想使用同步方法 你有什么解决办法或建议吗 提示:我想使用异步方法,因为I/O阻塞。(没有CPU限制或繁重的操作。)您必须选择,如果ValidationAttribute不支持异步/等待调用,那么您可能必须进行同步,否则您可以在IsValid中调用异步方法,但它不会阻塞,您可能会得到错误的结果 我看不出有什么办法可以解决这个问题,因为你几乎需要立即知道什
Task<bool> MyMethod(object obj);
但是我的异步方法的输出是Task
,我不想使用同步方法
你有什么解决办法或建议吗
提示:我想使用异步方法,因为I/O阻塞。(没有CPU限制或繁重的操作。)您必须选择,如果ValidationAttribute不支持异步/等待调用,那么您可能必须进行同步,否则您可以在IsValid中调用异步方法,但它不会阻塞,您可能会得到错误的结果 我看不出有什么办法可以解决这个问题,因为你几乎需要立即知道什么东西是有效的还是无效的。这可能是ValidationAttribute无法识别它们的原因
您可以修改您的模型,而不是进行扩展,并拥有一个isValidChecked事件或isInvalid事件,该事件由异步的详细信息更改触发,然后在这些事件触发时执行某些操作。您必须选择,如果ValidationAttribute不支持异步/等待调用,则您可能必须进行同步,否则,您可以在IsValid中调用异步方法,但它不会阻塞,您可能会得到错误的结果 我看不出有什么办法可以解决这个问题,因为你几乎需要立即知道什么东西是有效的还是无效的。这可能是ValidationAttribute无法识别它们的原因 您可以修改您的模型,而不是进行扩展,并拥有一个isValidChecked事件或isInvalid事件,该事件由异步的详细信息更改触发,然后在这些事件触发时执行某些操作 在自定义验证属性中使用异步方法 验证管道不是异步的,因此不可能用于此目的。看 此外,众所周知,验证是为了确保类型和值的正确性,而不是像评估字段这样的业务规则。这应该在您的业务/数据层中实施,您可以尝试使用JQuery验证或 在自定义验证属性中使用异步方法 验证管道不是异步的,因此不可能用于此目的。看
此外,众所周知,验证是为了确保类型和值的正确性,而不是像评估字段这样的业务规则。这应该在您的业务/数据层中强制执行,您可以尝试使用JQuery验证或。在
MyMethod
@Enigmativity中必须进行一些非常繁重的验证不,问题是I/O阻塞。是的,I/O将是繁重的验证。MyMethod
@Enigmativity中肯定有一些相当繁重的验证正在进行不,问题是I/O阻塞。是的,I/O将是繁重的验证。
ValidationResult IsValid (object? obj, ValidationContext validationContext);