• 6.1.1 验证注解的使用


    数据注解特性定义在名称空间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 特性的存在。本章后面部分将会讲解如何创建自定义注解。下面介绍如何在验证失败时创建自定义的错误提示消息。

  • 相关阅读:
    yum puppet dashboard
    puppet常用调试命令
    mysql oracle静默 一键安装脚本
    libvirt 基于C API基本使用案例
    mysql二进制
    mysql启动停止,一台服务器跑 多个mysql数据库
    mysql binaryVInstall
    Centos6.x/Oracle11G 自动化静默安装配置脚本
    最受欢迎linux命令
    xpages很不错的demo
  • 原文地址:https://www.cnblogs.com/ylbtech/p/5599835.html
Copyright © 2020-2023  润新知