65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 C# "DataAnnotation" 进行验证

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.18/5 (7投票s)

2015 年 5 月 11 日

CPOL

2分钟阅读

viewsIcon

39924

在这篇简短的文章中,我们将讨论 C# DataAnnotation 库如何帮助我们进行验证。

目录

引言

验证是任何软件应用程序中最重要的方面之一。通常,作为最佳实践,我们将这些验证放在业务类、模型等中。因此,如果您通常看到这种趋势,开发人员最终会在类的属性的“set”方法中编写这些验证。

public class Customer
    {
        private string _CustomerName;
        public string CustomerName
        {
            get { return _CustomerName; }
            set 
            {
                if (value.Length == 0)
                {
                    throw new Exception("Customer Name is required");
                }
                _CustomerName = value; 
            }
        }    
    }

DataAnnotation”为您提供现成的属性,您可以将这些属性装饰在类属性上,并且验证将相应地应用。

[Required]
public string CustomerName
{
            get { return _CustomerName; }
            set {_CustomerName = value; }
}

如何使用“DataAnnotations”?

步骤 1:引用 System.ComponentModel.DataAnnotations

第一步是向您的类库项目添加对“System.ComponentModel.DataAnnotations”程序集的引用。

步骤 2:使用属性装饰类

下一步是使用验证属性装饰类。例如,在“CustomerName”属性上,我们装饰了“Required”属性。

public class Customer
{
        private string _CustomerName;

        [Required]
        public string CustomerName
        {
            get { return _CustomerName; }
            set {_CustomerName = value; }
        }
}

步骤 3:调用“Validator”进行验证

装饰完验证属性后,我们需要调用“Validator”类来执行验证。创建 customer 对象并将“CustomerName”属性设置为空,以便触发验证错误。

Customer obj = new Customer();
obj.CustomerName = "";

使用上述创建的对象创建“ValidationContext”对象。

var context = new ValidationContext(obj,null,null);

使用“Validator”调用“TryValidateObject”方法来运行验证。验证错误将收集在“ValidationResult”集合中。

var result = new List<validationresult>(); var isValid = Validator.TryValidateObject(obj, context, result,true); </validationresult>

如果您希望循环遍历错误结果,可以在“result”集合上运行“foreach”。

foreach (var str in result)
{
Console.WriteLine(str.ErrorMessage.ToString());
}

以下是上述代码的图形表示。简单来说,要验证的对象会连同上下文一起传递给“validator”类,错误结果会出现在“ValidationResult”集合中。

供您参考:如果您有多个验证,请不要忘记将最后一个属性设置为 true

var isValid = Validator.TryValidateObject(obj, context, result,true);

另请参阅以下有关 C# 注解的视频

进一步阅读,请观看下面的面试准备视频和分步视频系列。

© . All rights reserved.