6.1.1 验证注解的使用

news/2024/7/5 2:00:20

数据注解特性定义在名称空间System.ComponentModel.DataAnnotations 中(但接下来
将看到,有些特性不是定义在这个名称空间中)。它们提供了服务器端验证的功能,当在模
型的属性上使用这些特性之一时,框架也支持客户端验证。在名称空间DataAnnotations 中,
有4 个特性可以用来应对一般的验证场合。下面从Required 特性开始对它们逐一介绍。

1.Required 必须字段

[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }

2.StringLength 字符长度

[Required]
[StringLength(160)]
public string FirstName { get; set; }
[Required]
[StringLength(160)]
public string LastName { get; set; }
[Required]
[StringLength(160, MinimumLength=3)]
public string FirstName {get; set;}

3.RegularExpression

[RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}")]
public string Email { get; set; }

4.Range

Range 特性用来指定数值类型值的最小值和最大值。

[Range(35,44)]
public int Age {get; set;}

该特性的第一个参数设置的是最小值,第二个参数设置的是最大值,这两个值也包含
在范围之内。Range 特性既可用于int 类型,也可用于double 类型。它的构造函数的另外
一个重载版本中有一个Type 类型的参数和两个字符串(这样就可以给date 属性和decimal
属性添加范围限制了)。

[Range(typeof(decimal), "0.00", "49.99")]
public decimal Price {get; set;}

5. System.Web.Mvc 下的验证特性
ASP.NET MVC框架还为应用程序在名称空间System.Web.Mvc 中额外添加了两个验证
特性。其中一个是Remote 特性。Remote 特性允许利用服务器端的回调函数执行客户端的
验证逻辑。以MVC Music Store 中RegisterModel 类的UserName 属性为例,系统中不允许
两个用户具有相同的UserName 值,但是在客户端很难验证以确保UserName 属性值的唯
一性(除非把所有的用户名都从数据库传送到客户端)。使用Remote 特性可以把UserName
的值传到服务器,然后在服务器端的数据库中与相应的表字段值进行比较:

[Remote("CheckUserName", "Account")]
public string UserName {get; set;}

在特性中可以设置客户端代码要调用的控制器名称和操作名称。客户端代码将自动把
用户输入的UserName 属性值发送到服务器,该特性的一个重载构造方法还允许指定要发
送给服务器的其他字段:

public JsonResult CheckUserName(string username)
{
var result = Membership.FindUsersByName(username).Count == 0;
return Json(result, JsonRequestBehavior.AllowGet);
}

上面的控制器操作将利用与UserName 属性同名的参数进行验证,并返回一个封装在
JavaScript Object Notation(JSON)对象中的布尔类型值(true 或false)。第8 章将会对JSON、
AJAX 和其他客户端特征进行详细介绍。
第二个是Compare 特性,它用于确保模型对象的两个属性拥有相同的值。例如,为了
避免顾客输入错误,往往要求输入两次e-mail 地址:

[RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}")]
public string Email { get; set; }
[Compare("Email")]
public string EmailConfirm { get; set; }

是由于数据注解的可扩展性,才导致了Remote 和Compare 特性的存在。本章后面部分将会讲解如何创建自定义注解。下面介绍如何在验证失败时创建自定义的错误提示消息。

本文转自ylbtech博客园博客,原文链接:http://www.cnblogs.com/ylbtech/p/5599835.html,如需转载请自行联系原作者


http://lihuaxi.xjx100.cn/news/239177.html

相关文章

香草 jboss 工具_香草JavaScript中的记忆游戏

香草 jboss 工具by Marina Ferreira通过玛丽娜费雷拉(Marina Ferreira) 香草JavaScript中的记忆游戏 (Memory Game in Vanilla JavaScript) 在30分钟内构建一个记忆游戏,学习JS,CSS和HTML! (Learn JS, CSS and HTML by building a memory ga…

织梦 新建 php arclist,织梦arclist按照自定义字段来调用相关文章

织梦arclist按照自定义字段来调用相关文章,这对于想要在首页调用某个自定义字段的文章的同学来讲,非常不错,接下来看教程打开 include aglibrclist.lib.php 找到://时间限制(用于调用最近热门文章、热门评论之类),这里…

CES上百度无人车队炫技,陆奇要用“China speed”改变世界

本文由 「AI前线」原创,原文链接:CES上百度无人车队炫技,陆奇要用“China speed”改变世界编辑|EmilyAI 前线导读:“美国当地时间 1 月 8 日,百度在拉斯维加斯举办了主题为“AI is Changing the World, Chi…

卸载linux系统装win,如何在计算机上删除 Linux 并安装 Windows

多个 IDE 驱动器Device Boot Start End Blocks Id System/dev/hda1 * 1 500 4016218 83 Linux native (IDE hard drive 1, partition 1)/dev/hda2 501 522 176715 82 Linux swap (IDE hard drive 1, partition 2)/dev/hdb1 1 500 4016218 83 Linux native (IDE hard drive 2, p…

latex 插图解释_大O符号-只需插图和视频即可解释

latex 插图解释Big O notation is used to communicate how fast an algorithm is. This can be important when evaluating other people’s algorithms, and when evaluating your own! In this article, I’ll explain what Big O notation is and give you a list of the m…

IntelliJ IDEA控制台输出中文乱码问题解决

如果还不行,那么再极端的设置,在IDEA启动的时候强制设置为UTF-8: 打开增加-Dfile.encodingUTF-8,重启Intellij IDEA 再或者直接在项目运行的时候加入UTF-8的设置 如果还是不行,那么你可能装了一个假的IDEA。

[算法] [常微分方程] [欧拉法 改进欧拉法 经典R-K算法]

1 #include<iostream>2 #include<cmath>3 #include<cstdio>4 #include<iomanip>5 using namespace std;6 double h0.1;//步差7 double xi[11]{0};8 double ol_yi[11]{1};9 double gol_yi[11]{1}; 10 double rk_yi[11]{1}; 11 double real_yi[11]{1}; 1…