如何对用户输入的数据进行验证

  • A+
所属分类:.NET技术
摘要

为了保证用户输入系统的数据是有效的,同时也是为了避免程序出现不可预期的问题,保证应用程序能够安全的运行,所以对输入的数据进行验证是非常有必要的。
刚开始学代码的时候,我是这样进行数据校验的

看上去是不是很丑陋…,表单数据多的时候往往能写上几百上千行的if判断语句。并且每个需要保存更新数据的地方都需要编写这样的验证代码…
后来,稍微学会点了偷懒的技巧,把数据的验证放到了对象里,这样客户端每次只需要调用验证方法就可以对数据进行验证。

为了保证用户输入系统的数据是有效的,同时也是为了避免程序出现不可预期的问题,保证应用程序能够安全的运行,所以对输入的数据进行验证是非常有必要的。
刚开始学代码的时候,我是这样进行数据校验的
如何对用户输入的数据进行验证
看上去是不是很丑陋...,表单数据多的时候往往能写上几百上千行的if判断语句。并且每个需要保存更新数据的地方都需要编写这样的验证代码...
后来,稍微学会点了偷懒的技巧,把数据的验证放到了对象里,这样客户端每次只需要调用验证方法就可以对数据进行验证。

public IEnumerable<Tuple<bool, string>> Validate() {     if (string.IsNullOrEmpty(Name))     {         yield return new Tuple<bool, string>(false, "客户姓名不允许为空!");     }     if (Age > 0 && Age <= 120)     {         yield return new Tuple<bool, string>(false, "年龄的有效范围是1~120岁!");     }     if (string.IsNullOrEmpty(Phone))     {         yield return new Tuple<bool, string>(false, "电话号码不允许为空!");     }      //... 以下还有一百行代码 }  // 客户端调用代码 foreach (var item in custom.Validate()) {     if (!item.Item1)     {         Console.WriteLine(item.Item2);         return;     } }  

再后来,看到了别人通过给对象成员添加校验特性,在提交数据时通过反射获取对象成员声明的特性进行校验,进一步简化了代码。你可以自己去定义数据验证的相关验证特性类和验证处理的代码,但作为一个懒人,我通过使用.NET提供的System.ComponentModel.DataAnnotations.dll库中的校验特性和验证处理类就可以很简单的实现数据的校验。如果你之前写过ASP.NET MVC相关的代码,应该对他比较熟悉

    public class Custom     {         [Required]         public string Name { get; set; }         [Required]         [Range(0, 2)]         public int Sex { get; set; }         [Required]         [MaxLength(11)]         public string Phone { get; set; }         [Required]         [Range(1, 120, ErrorMessage = "年龄选择范围1~120岁")]         public int Age { get; set; }          //... 以下还有一百行代码     } 

如何对用户输入的数据进行验证

关于更多的System.ComponentModel.DataAnnotations资料https://docs.microsoft.com/zh-cn/dotnet/api/system.componentmodel.dataannotations?view=net-6.0