• 第三章 Models详解


    摘自:http://www.cnblogs.com/xdotnet/archive/2012/03/07/aspnet_mvc40_validate.html

    Model的概念

      万丈高楼平地起,先理解概念才能更好的使用。

      百度百科的解说:在MVC(模型Model-视图View-控制器Controller)模式中,Model代表模型,是业务流程/状态的处理以及业务规则的制定,接受视图请求的数据,并返回最终的处理结果。

      数据是由Model提供的,但不是指局部变量、全局变量或常数这样的数据,而是指程序外部所提供的数据。外部数据,包含数据库、文件、web service等,都是可以算是model。

      Model的类型

      按ASP.NET MVC的分类方法:DomainModel、ViewModel、InputModel

      按领域驱动设计,分为三类:entity、ValueObject、Service (程序和动作)

      

    Model验证

    了解了这些就可以对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 { getset; }
     6 
     7         [Required]
     8         [DataType(DataType.EmailAddress)]
     9         [Display(Name = "Email address")]
    10         public string Email { getset; }
    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 { getset; }
    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 { getset; }
    复制代码

    一、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属性。

  • 相关阅读:
    【jQuery日期处理】两个时间大小的比较
    CSS 盒子模型(Box model)中的 padding 与 margin
    如何优雅地制作精排 ePub —— 个人电子书制作规范及基本样式表
    异常处理 Exception
    Log4net
    HttpServerUtility类
    MVC 数据验证
    BigRender
    CSS中的块级元素与行级元素
    使用jQuery.form插件,实现完美的表单异步提交
  • 原文地址:https://www.cnblogs.com/xcsn/p/3341336.html
Copyright © 2020-2023  润新知