今天我们继续ASP.NET 4.5 MVC 4.0,前两天熟悉了MVC4.0在VS11和win8下的更新,以及MVC中的基础语法和几个关键字的使用。了解了这些就可以对MVC进一步认识,相信很多人都对MVC中三个模块有一定的认识。今天我们主要来看一下Models模块,这个和我们三层里用的实体类有点相似,不同的是这里的属性需要添加一些验证属性(Attribute)或其他的一些Filter(过滤器)。在MVC中验证属性主要包含在System.ComponentModel.DataAnnotations.dll程序集中,所以需要对其添加引用。

首先我们先看一下注册模型的代码,然后对其中使用到的验证属性等进行进一步的认识,代码如下。

public class RegisterModel
     {
         [Required]
         [Display(Name = "User name")]
         public string UserName { get; set; }
 
         [Required]
         [DataType(DataType.EmailAddress)]
         [Display(Name = "Email address")]
         public string Email { get; set; }
 
         [Required]
         [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
         [DataType(DataType.Password)]
         [Display(Name = "Password")]
         public string Password { get; set; }
 
         [DataType(DataType.Password)]
         [Display(Name = "Confirm password")]
         [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
         public string ConfirmPassword { get; set; }

}

一、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(三)(转)的更多相关文章

  1. 跟我一起学习ASP.NET 4.5 MVC4.0(二)

    上一篇文章中(跟我一起学习ASP.NET 4.5 MVC4.0(一))我们基础的了解了一下ASP.NET MVC4.0的一些比较简单的改变,主要是想对于MVC3.0来说的.因为这一些列主要是要给ASP ...

  2. 跟我一起学习ASP.NET 4.5 MVC4.0(一)

    跟我一起学习ASP.NET 4.5 MVC4.0(一)   由于上面一个项目使用的是ASP.NET4.0 MVC3.0,在招人的时候发现很多人有听说过MVC,但是却是没用过,对MVC也只是一知半解,最 ...

  3. 跟我一起学习ASP.NET 4.5 MVC4.0 (转)

    跟我一起学习ASP.NET 4.5 MVC4.0(一)   由于上面一个项目使用的是ASP.NET4.0 MVC3.0,在招人的时候发现很多人有听说过MVC,但是却是没用过,对MVC也只是一知半解,最 ...

  4. 跟我一起学习ASP.NET 4.5 MVC4.0(五)(转)

    前面几篇文章介绍了一下ASP.NET MVC中的一些基础,今天我们一起来学习一下在ASP.NET MVC中控件的封装.在页面中我们会经常使用到Html对象,来程序控件,当然这里的控件不是说ASP.NE ...

  5. 跟我一起学习ASP.NET 4.5 MVC4.0(一)(转)

    由于上面一个项目使用的是ASP.NET4.0 MVC3.0,在招人的时候发现很多人有听说过MVC,但是却是没用过,对MVC也只是一知半解,最近想给团队成员做一个系统的解说,让大家都可以学习一下ASP. ...

  6. 跟我一起学习ASP.NET 4.5 MVC4.0(五)

    前面几篇文章介绍了一下ASP.NET MVC中的一些基础,今天我们一起来学习一下在ASP.NET MVC中控件的封装.在页面中我们会经常使用到Html对象,来程序控件,当然这里的控件不是说ASP.NE ...

  7. 跟我一起学习ASP.NET 4.5 MVC4.0(六)(转)

    这一系列文章跨度有点大,由于最近忙于其他事情,没有更新,今天重新安装了下Win8系统,VS2012和SQLServer 2012,顺便抽空继续一篇.随着VS2012 RC版本的放出,ASP.NET M ...

  8. 跟我一起学习ASP.NET 4.5 MVC4.0(四)(转)

    前几个文章中介绍了一些关于MVC4.0的东东,今天我们来看一下登陆验证,也可以说是权限验证,即AuthorizeAttribute.这个可以使用在控制器Controller上,也可以使用在Action ...

  9. 跟我一起学习ASP.NET 4.5 MVC4.0(六)

    这一系列文章跨度有点大,由于最近忙于其他事情,没有更新,今天重新安装了下Win8系统,VS2012和SQLServer 2012,顺便抽空继续一篇.随着VS2012 RC版本的放出,ASP.NET M ...

随机推荐

  1. 开发过程中常用的Linux命令

    做Java开发好几年了,部署JavaWeb到服务器上,一般都选择Linux,Linux作为服务器真是不二之选,高性能,只要熟悉Linux,操作快捷,效率很高. 总结一下工作中常用的Linux命令备忘: ...

  2. 组件化CSS--管理你整站的CSS文件

    为什么要拆分样式文件? 更易于查找样式规则. 简化维护,方便管理. 还可以针对某一页面提供特定的样式. 为什么要添加桥接样式? 你可以随时添加或移除样式而不需要修改HTML 文档. 为什么要定义两种媒 ...

  3. hdu 4493 Tutor 水题

    Tutor Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4493 D ...

  4. 使用NPOI导出DataTable到Excel

    使用C#对DataTable导出到Excel是我们工作当中比较多用到的场景,微软提供了Microsoft.Office.Interop.Excel组件可以进行操作,但是该组件在数据量大的时候速度很慢, ...

  5. 【JavaScript】JavaScript脚本代码的位置及在页面中的执行顺序

    三.如何改变Javascript在页面的执行顺序 利用onload <script type="text/javascript">window.onload = f; ...

  6. 【JavsScript】一个元素绑定多个事件

    <script> document.getElementById("a").addEventListener("click", function() ...

  7. 提高HTML5 canvas性能的几种方法

    简介 HTML5 canvas 最初起源于苹果(Apple)的一项实验,现在已经成为了web中受到广泛支持的2D快速模式绘图(2Dimmediate mode graphic)的标准.许多开发者现在利 ...

  8. oc-19-成员变量修饰符

    /** 成员变量修饰符 1.@public:(公开)只要导入头文件,任何位置都可以直接访问. 2.@protected:(半公开)可以在本类和子类当中进行访问.(默认) 3.@private:(私有) ...

  9. shell 编程中使用到得if语句内判断参数

    http://blog.chinaunix.net/uid/21411227/cid-63616-list-1.html 1.判断文件类型   –b 当file存在并且是块文件时返回真 -c 当fil ...

  10. IIS 发布网站遇到的问题

    1.解决win7 64位[ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 http://wwwu8.wap.blog.163.com/w2/blogDetail.do?hostID ...