Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在c中的自定义验证属性中使用异步方法#_C#_Asp.net_Asp.net Core_Asynchronous_Custom Attributes - Fatal编程技术网

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);