asp.net mvc 3.0详细笔记__17__使用 DataAnnotations 进行模型验证
2014-01-05 19:54
796 查看
欢迎一起来学习MVC 3.0,我们在一步一个脚印的做一个MVC 3.0的项目,期间会有很多值得探索的地方。将会学到Razor,Lampda,Entity Framework,Linq C#新特性等等知识,一起加油吧!
说起验证,大家都很熟悉了,各种验证手段也层出不穷,那么微软的asp.net mvc 3.0为我们提供了什么样的验证理念呢?今天我们就来深入剖析以下.
(1)首先分析验证的目的:防止用户通过输入对程序造成安全方面的隐患。说白了,就是防止用户将某些不符合规则,甚至对程序造成某种破坏的数据提交到数据库。
微软认为:既然验证的东西是针对数据库的数据,而asp.net mvc 3.0又将mvc中的M(Model)与数据库紧密联系起来,因此微软决定在M(模型)这块下手,之前我们的模型层的类中隐隐约约看见过一些解释性样式的文字,具体案例参考StoreManager控制器下的Edit方法和StoreManager文件夹下的Edit.cshtml视图文件,部分Edit方法如代码1.1
代码1.1
(2)常用的DataAnnotations如下所示:
Required 必须 – 表示这个属性是必须提供内容的字段
DisplayName 显示名 – 定义表单字段的提示名称
StringLength 字符串最大长度 – 定义字符串类型的属性的最大长度
Range 范围 – 为数字类型的属性提供最大值和最小值
Bind 绑定 – 列出在将请求参数绑定到模型的时候,包含和不包含的字段
ScaffoldColumn 支架列 - 在编辑表单的时候,需要隐藏起来的的字符
(3)虽然在模型层对一些字段进行了验证信息的声明,但最终还是需要在视图一侧调用这份声明才会真正的去验证,有时候验证没效果大概就是声明了而没有去调用的缘故。因此在视图页面里首先要做的是:在表单范围内要用@Html.ValidationSummary(true)调用验证;这还不算完,因为在页面上,一般要把错误提示显示在当前字段的后面,因此你还要在显示信息的位置调用验证,
如对以上价格的验证
@Html.EditorFor(model => model.Price)
@Html.ValidationMessageFor(model => model.Price)
(4)执行程序,在编辑的页面的价格输入框中输入"5555555",点击"Save"如图4.1所示,验证成功。
图4.1
说起验证,大家都很熟悉了,各种验证手段也层出不穷,那么微软的asp.net mvc 3.0为我们提供了什么样的验证理念呢?今天我们就来深入剖析以下.
(1)首先分析验证的目的:防止用户通过输入对程序造成安全方面的隐患。说白了,就是防止用户将某些不符合规则,甚至对程序造成某种破坏的数据提交到数据库。
微软认为:既然验证的东西是针对数据库的数据,而asp.net mvc 3.0又将mvc中的M(Model)与数据库紧密联系起来,因此微软决定在M(模型)这块下手,之前我们的模型层的类中隐隐约约看见过一些解释性样式的文字,具体案例参考StoreManager控制器下的Edit方法和StoreManager文件夹下的Edit.cshtml视图文件,部分Edit方法如代码1.1
代码1.1
/// <summary> /// 唱片价格 /// </summary> [Required(ErrorMessage = "唱片必须有价格!")] [Range(0.01, 100.00, ErrorMessage = "范围必须从 0.01 到 100.00")] public Nullable<decimal> Price { get; set; }其中Required和Range就是用于验证而提供的关键字,同属于DataAnnotations
(2)常用的DataAnnotations如下所示:
Required 必须 – 表示这个属性是必须提供内容的字段
DisplayName 显示名 – 定义表单字段的提示名称
StringLength 字符串最大长度 – 定义字符串类型的属性的最大长度
Range 范围 – 为数字类型的属性提供最大值和最小值
Bind 绑定 – 列出在将请求参数绑定到模型的时候,包含和不包含的字段
ScaffoldColumn 支架列 - 在编辑表单的时候,需要隐藏起来的的字符
(3)虽然在模型层对一些字段进行了验证信息的声明,但最终还是需要在视图一侧调用这份声明才会真正的去验证,有时候验证没效果大概就是声明了而没有去调用的缘故。因此在视图页面里首先要做的是:在表单范围内要用@Html.ValidationSummary(true)调用验证;这还不算完,因为在页面上,一般要把错误提示显示在当前字段的后面,因此你还要在显示信息的位置调用验证,
如对以上价格的验证
@Html.EditorFor(model => model.Price)
@Html.ValidationMessageFor(model => model.Price)
(4)执行程序,在编辑的页面的价格输入框中输入"5555555",点击"Save"如图4.1所示,验证成功。
图4.1
相关文章推荐
- ASP.NET MVC 音乐商店 - 6. 使用 DataAnnotations 进行模型验证
- ASP.NET MVC 音乐商店 - 6. 使用 DataAnnotations 进行模型验证
- ASP.NET MVC 音乐商店 - 6. 使用 DataAnnotations 进行模型验证
- ASP.NET MVC 音乐商店 - 6. 使用 DataAnnotations 进行模型验证
- Asp.Net MVC 使用 DataAnnotations 进行模型验证
- ASP.NET MVC Music Store教程(6):使用数据注释为模型进行验证
- 我要学ASP.NET MVC 3.0(十): MVC 3.0 使用 Forms身份验证
- 我要学ASP.NET MVC 3.0(十): MVC 3.0 使用 Forms身份验证
- asp.net mvc 3.0详细笔记__15__Razor
- 学习笔记:ASP.NET MVC ModelState验证模型状态
- 我使用Asp.net MVC WebAPI支持OData协议进行分页操作的笔记(第三篇)
- asp.net mvc 3.0详细笔记__06__项目文件结构详解_Content和Scripts
- asp.net mvc 3.0详细笔记__08__项目文件结构详解_Web.config
- 模型验证组件 FluentValidation 在 ASP.NET MVC 3 下的使用篇
- asp.net mvc 3.0详细笔记__03__项目文件结构详解_Controllers
- asp.net mvc 3.0详细笔记__07__项目文件结构详解_Global.asax
- [小技巧][ASP.Net MVC Hack] 使用 HTTP 报文中的 Header 字段进行身份验证
- 【原创】Asp.Net MVC 学习笔记之-使用Model验证
- ASP.NET MVC:使用Enterprise Library验证程序块进行验证对象