C# 如何在多属性属性上的自定义验证属性首次验证失败时中断?
我有三个自定义验证属性:Req、FixedLen和Number。我编写了自定义验证属性,以避免每次使用它们时编写错误消息,因为我的网站是波斯语的,我需要波斯语消息。以下是我在模型中使用它们的方式: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(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,但这不会阻止其他验证属性触发。