Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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#_Asp.net Mvc_Validation_Data Annotations - Fatal编程技术网

C# 如何在多属性属性上的自定义验证属性首次验证失败时中断?

C# 如何在多属性属性上的自定义验证属性首次验证失败时中断?,c#,asp.net-mvc,validation,data-annotations,C#,Asp.net Mvc,Validation,Data Annotations,我有三个自定义验证属性:Req、FixedLen和Number。我编写了自定义验证属性,以避免每次使用它们时编写错误消息,因为我的网站是波斯语的,我需要波斯语消息。以下是我在模型中使用它们的方式: [Req] [FixedLen(8)] [Number] public string phone { get; set; } 问题是,即使第一个属性检测到数据有问题,也会触发其他两个属性。因此,即使发布的数据为null,我的FixedLen属性也会调用isValid方法。我想要的是,在第一次验证失败

我有三个自定义验证属性:Req、FixedLen和Number。我编写了自定义验证属性,以避免每次使用它们时编写错误消息,因为我的网站是波斯语的,我需要波斯语消息。以下是我在模型中使用它们的方式:

[Req]
[FixedLen(8)]
[Number]
public string phone { get; set; }
问题是,即使第一个属性检测到数据有问题,也会触发其他两个属性。因此,即使发布的数据为null,我的FixedLen属性也会调用isValid方法。我想要的是,在第一次验证失败时,该属性的验证将中断,并且我的下一个属性将被验证

编辑:

public class ReqAttribute : ValidationAttribute
{
    private string error_msg = "فیلد الزامی";
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        if (value == null || value.ToString().Trim().Length == 0)
            return new ValidationResult(error_msg);
        return null;
    }
}

为什么不使用资源文件来处理错误消息?您自定义的验证属性是什么?(如果您的数据为
null
,并且您的
FixedLen
属性代码正在验证,那么您的代码是错误的!)在isValid方法中,如果数据不为null,我将返回null,对吗?如果属性为null且值为
null
,则
isValid
方法应返回
验证结果。成功
(但您没有显示任何代码或解释为什么需要自定义验证属性)检查编辑,当值为null时,我返回ValidationResult,但这不会阻止其他验证属性触发。