博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.net4 DataAnnotations小试(转帖)
阅读量:6625 次
发布时间:2019-06-25

本文共 2307 字,大约阅读时间需要 7 分钟。

(以下内容转自网易博客)

上一文提到了数据验证的问题,既然提到System.ComponentModel.DataAnnotations是个好东西。自然是要试一试了。我写了一点测试代码如下:

 1 
using
 System;
 2 
using
 System.Collections.Generic;
 3 
using
 System.ComponentModel.DataAnnotations;
 4 
 5 
namespace
 ValidateCon01
 6 
{
 7 
    
class
 Program
 8 
    {
 9 
        
static
 
void
 Main(
string
[] args)
10 
        {
11 
            Test1 t 
=
 
new
 Test1();
12 
            t.Age 
=
 
12
;
13 
            t.Name 
=
 
"
曾志伟
"
;
14 
            t.Note 
=
 
"
pppp sb aaa
"
;
15 
16 
            List
<
ValidationResult
>
 vErrors
=
new
 List
<
ValidationResult
>
();
17 
            ValidationContext context 
=
 
new
 ValidationContext(t, 
null
null
);
18 
            Validator.TryValidateObject(t, context, vErrors, 
true
);
19 
20 
            
if
 (vErrors 
!=
 
null
 
&&
 vErrors.Count 
!=
 
0
)
21 
            {
22 
                
foreach
 (var e 
in
 vErrors)
23 
                {
24 
                    Console.WriteLine(e.ErrorMessage);
25 
                }
26 
            }
27 
            
else
28 
            {
29 
                Console.WriteLine(
"
实体是合法的。
"
);
30 
            }
31 
32 
            Console.ReadLine();
33 
        }
34 
    }
35 
36 
    
public
 
class
 Test1
37 
    {
38 
        
private
 
int
 _Age
=
1
;
39 
40 
        
//
简单自定义验证
41 
        [CustomValidation(
typeof
(ValidationRules), 
"
GE
"
)]
42 
        
public
 
int
 Age
43 
        {
44 
            
get
 { 
return
 _Age; }
45 
            
set
 { _Age 
=
 value; }
46 
        }
47 
48 
        
private
 
string
 _Name
=
string
.Empty;
49 
50 
        
//
正则表达式验证
51 
        [RegularExpression(
"
^([刘|李]){1}.*$
"
,ErrorMessage
=
"
参军者必须姓刘或姓李。
"
)]
52 
        
public
 
string
 Name
53 
        {
54 
            
get
 { 
return
 _Name; }
55 
            
set
 { _Name 
=
 value; }
56 
        }
57 
58 
        
private
 
string
 _Address
=
string
.Empty;
59 
60 
        
//
自己写Attribute完成更复杂的验证
61 
        [ComplexValidateAttribute]
62 
        
public
 
string
 Note
63 
        {
64 
            
get
 { 
return
 _Address; }
65 
            
set
 { _Address 
=
 value; }
66 
        }
67 
    }
68 
69 
    
public
 
static
 
class
 ValidationRules
70 
    {
71 
        
public
 
static
 ValidationResult GE(
object
 data, ValidationContext context)
72 
        {
73 
            
int
 a 
=
 (
int
)data;
74 
            
if
 (a 
>
 
18
)
75 
                
return
 ValidationResult.Success;
76 
            
else
77 
                
return
 
new
 ValidationResult(
"
参军者必须大于18周岁。
"
);
78 
        }
79 
    }
80 
81 
    
public
 
class
 ComplexValidateAttribute : ValidationAttribute
82 
    {
83 
        
public
 
override
 
bool
 IsValid(
object
 value)
84 
        {
85 
            
string
 msg 
=
 value.ToString();
86 
            
return
 msg.IndexOf(
"
sb
"
==
 
-
1
;
87 
        }
88 
89 
        
protected
 
override
 ValidationResult IsValid(
object
 value, ValidationContext validationContext)
90 
        {
91 
            
string
 msg 
=
 value.ToString();
92 
            
if
 (msg.IndexOf(
"
sb
"
!=
 
-
1
)
93 
                
return
 
new
 ValidationResult(
"
包含敏感信息。验证失败。
"
);
94 
            
else
95 
                
return
 ValidationResult.Success;
96 
        }
97 
    }
98 
99 
}

这段代码的最终输出结果为:

 

转载于:https://www.cnblogs.com/ggluojianfeng/archive/2011/08/27/2155279.html

你可能感兴趣的文章
JVM新生代和老年代配置原则
查看>>
ArrayList
查看>>
源码阅读:AFNetworking(二)——AFURLRequestSerialization
查看>>
Angular学习笔记(一) - 之安装教程
查看>>
Spring Websocket实现文本、图片、声音、文件下载及推送、接收及显示(集群模式)...
查看>>
Python学习
查看>>
阿里云文件存储NAS简介及应用场景
查看>>
“数据结构+算法”视角的Asprova
查看>>
最严新规发布 网络短视频平台该如何降低违规风险? ...
查看>>
云服务器ECS出现速度变慢 以及突然断开怎么办?
查看>>
208亿背后的“秘密”
查看>>
Android系统自带样式(android:theme)解析
查看>>
全志A33开发板Linux内核定时器编程
查看>>
全栈必备 敏捷估点
查看>>
一个爬虫小技巧
查看>>
作为一名合格的JAVA架构师需要点亮哪些技能树?
查看>>
为什么短视频会让人刷不停?背后也许用了这套技术
查看>>
Kubernetes 在知乎上的应用
查看>>
Fescar 发布 0.3.1 版本, 支持 ZooKeeper 注册中心
查看>>
【死磕 Spring】----- IOC 之解析 bean 标签:BeanDefinition
查看>>