跟我一起学习ASP.NET 4.5 MVC4.0(三)
今天我们继续ASP.NET 4.5 MVC 4.0,前两天熟悉了MVC4.0在VS11和win8下的更新,以及MVC中的基础语法和几个关键字的使用。了解了这些就可以对MVC进一步认识,相信很多人都对MVC中三个模块有一定的认识。今天我们主要来看一下Models模块,这个和我们三层里用的实体类有点相似,不同的是这里的属性需要添加一些验证属性(Attribute)或其他的一些Filter(过滤器)。在MVC中验证属性主要包含在System.ComponentModel.DataAnnotations.dll程序集中,所以需要对其添加引用。
首先我们先看一下注册模型的代码,然后对其中使用到的验证属性等进行进一步的认识,代码如下。
1 public class RegisterModel
2 {
3 [Required]
4 [Display(Name = "User name")]
5 public string UserName { get; set; }
6
7 [Required]
8 [DataType(DataType.EmailAddress)]
9 [Display(Name = "Email address")]
10 public string Email { get; set; }
11
12 [Required]
13 [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
14 [DataType(DataType.Password)]
15 [Display(Name = "Password")]
16 public string Password { get; set; }
17
18 [DataType(DataType.Password)]
19 [Display(Name = "Confirm password")]
20 [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
21 public string ConfirmPassword { get; set; }
22 }
一、RequiredAttribute属性
使用这个标记的属性表示必须,如果客户端返回的数据中没有设置此项,则在ModelState.IsValid属性将为false。错误信息将会包含在ModelState对象里,客户端就可以通过@Html.ValidationMessageFor来显示模型属性验证错误信息。让我们打开VS11自带的Internet Application项目,并使用Page Inspector来调试程序,双击注册按钮,我们就可以看到这个验证的相关信息,如下图所示。
在图中就可以看到这个注册模型RequiredAttribute验证标记的验证信息,在input标记中的data-val-required属性呈现的是严重信息,这些属性都是微软扩展的供JQuery和其验证扩展库使用。如果你对客户端验证感兴趣可以研究一下Scripts目录下的“jquery.validate.js”和“jquery.validate.unobtrusive.js”,这样你就会知道他是如何工作的了。
二、DisplayAttribute属性
这个属性主要用于前台显示时的字符串,比如注册模型中的UserName属性在前台显示的就是“User name”,从上面图片中的HTML代码中就可以看出来。当然我们也可以把它改成“用户名”,这样执行后就不会显示英文了。
三、StringLengthAttribute属性
这个属于验证属性,用于判断当前属性字符串长度,可以用设置最小值和最大值。这个比较少用,我做过的项目只有在密码上回用这个,其他一般会给正则表达式进行验证。
四、CompareAttribute属性
这个验证属性主要用于对比两个属性的值是否相同,一般用于密码和确认密码,因为这两个是要一样的。
五、RegularExpressionAttribute属性
这个属性将使用参数里设置的正则表达式来验证当前属性是否合法,这个我会比较常用,像用户注册等等都会对其进行验证。
六、RangeAttribute属性
这个属性为范围区间验证,可以是数字,也可以是对象,需要指定最小值和最大值,如果不是数字还需要指定对比的类型。
七、RemoteAttribute属性
这个属性实现了远处验证,参数主要是设置服务端的控制器和方法名称,比如我们的要验证注册模型中的UserName是否已经被注册,就可以使用这个Remote属性。
在写这篇文章的时候发现基本属于3.0的范畴,在博客园中已经有人写的比我好,可能是因为在我看来很多都已经知道了,没必要写出来。我在博客园里收了一下“MVC 3.0系列”感谢一下“记忆失去的青春”,又不懂的可以看看他写的系列文章。下一篇文章我将主要注意ASP.NET MVC4.0的更新内容,而3.0中有用到的一些技巧进行说明。
跟我一起学习ASP.NET 4.5 MVC4.0(三)的更多相关文章
- 跟我一起学习ASP.NET 4.5 MVC4.0(二)
上一篇文章中(跟我一起学习ASP.NET 4.5 MVC4.0(一))我们基础的了解了一下ASP.NET MVC4.0的一些比较简单的改变,主要是想对于MVC3.0来说的.因为这一些列主要是要给ASP ...
- 跟我一起学习ASP.NET 4.5 MVC4.0(一)
跟我一起学习ASP.NET 4.5 MVC4.0(一) 由于上面一个项目使用的是ASP.NET4.0 MVC3.0,在招人的时候发现很多人有听说过MVC,但是却是没用过,对MVC也只是一知半解,最 ...
- 跟我一起学习ASP.NET 4.5 MVC4.0 (转)
跟我一起学习ASP.NET 4.5 MVC4.0(一) 由于上面一个项目使用的是ASP.NET4.0 MVC3.0,在招人的时候发现很多人有听说过MVC,但是却是没用过,对MVC也只是一知半解,最 ...
- 跟我一起学习ASP.NET 4.5 MVC4.0(五)(转)
前面几篇文章介绍了一下ASP.NET MVC中的一些基础,今天我们一起来学习一下在ASP.NET MVC中控件的封装.在页面中我们会经常使用到Html对象,来程序控件,当然这里的控件不是说ASP.NE ...
- 跟我一起学习ASP.NET 4.5 MVC4.0(一)(转)
由于上面一个项目使用的是ASP.NET4.0 MVC3.0,在招人的时候发现很多人有听说过MVC,但是却是没用过,对MVC也只是一知半解,最近想给团队成员做一个系统的解说,让大家都可以学习一下ASP. ...
- 跟我一起学习ASP.NET 4.5 MVC4.0(五)
前面几篇文章介绍了一下ASP.NET MVC中的一些基础,今天我们一起来学习一下在ASP.NET MVC中控件的封装.在页面中我们会经常使用到Html对象,来程序控件,当然这里的控件不是说ASP.NE ...
- 跟我一起学习ASP.NET 4.5 MVC4.0(六)(转)
这一系列文章跨度有点大,由于最近忙于其他事情,没有更新,今天重新安装了下Win8系统,VS2012和SQLServer 2012,顺便抽空继续一篇.随着VS2012 RC版本的放出,ASP.NET M ...
- 跟我一起学习ASP.NET 4.5 MVC4.0(四)(转)
前几个文章中介绍了一些关于MVC4.0的东东,今天我们来看一下登陆验证,也可以说是权限验证,即AuthorizeAttribute.这个可以使用在控制器Controller上,也可以使用在Action ...
- 跟我一起学习ASP.NET 4.5 MVC4.0(三)(转)
今天我们继续ASP.NET 4.5 MVC 4.0,前两天熟悉了MVC4.0在VS11和win8下的更新,以及MVC中的基础语法和几个关键字的使用.了解了这些就可以对MVC进一步认识,相信很多人都对M ...
- 跟我一起学习ASP.NET 4.5 MVC4.0(六)
这一系列文章跨度有点大,由于最近忙于其他事情,没有更新,今天重新安装了下Win8系统,VS2012和SQLServer 2012,顺便抽空继续一篇.随着VS2012 RC版本的放出,ASP.NET M ...
随机推荐
- 使用maven开发MR
1.安装mvn(可以省略,因为eclipse自带maven插件) 1.1. 上传安装包到linux 1.2. 解压maven安装包 mkdir /usr/maven -bin.tar.gz -C /u ...
- ArchLinux For Arm 树莓派开机自启动脚本rc.local
今天折腾了下树莓派的迅雷固件,迅雷的安装很顺利,解压直接运行portal 就搞定了, 但是自启动就有问题了,由于新版的ArchLinux切换到systemd,不但rc.conf省了,连rc.local ...
- P2472 [SCOI2007]蜥蜴(网络最大流)
P2472 [SCOI2007]蜥蜴 题目描述 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距 ...
- 导出数据库表为world文档说明,以及PowerDesigner导出表结构pdm设计文档
如何使用“mysql导出数据库结构为world工具”以及如何使用powerdesigner映射数据库模型 一.通过powerdesigner配置ojdbc 1.安装并打开powerdesigner,新 ...
- 论文笔记—Flattened convolution neural networks for feedforward acceleration
1. 论文思想 一维滤过器.将三维卷积分解成三个一维卷积.convolution across channels(lateral), vertical and horizontal direction ...
- Pc端css初始化
@charset "UTF-8"; /**css初始化**/ body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd ...
- 06_Flume_interceptor_时间戳+Host
1.目标场景 2.flume agent配置文件 # define agent name, source/sink/channel name a1.sources = r1 a1.sinks = k1 ...
- ubuntu16.04上安装Jenkins,获取登陆密码
sudo cat /usr/share/tomcat7/.jenkins/secrets/initialAdminPassword
- Python day15装饰器基本理论,以及结合全局变量模拟session
装饰器(decorator):为其他函数添加附加功能 原则:1.不修改被修饰函数源代码 2.不修改被修饰函数的调用方式 装饰器=高阶函数+函数嵌套+闭包 import time def timmer( ...
- XML_CPP_资料_libXml2_01_Code
ZC: 这里的代码,就是 http://www.cnblogs.com/cppskill/p/6207609.html(我的文章"XML_CPP_资料_libXml2_01 - CppSki ...