• MVC-Model数据注解(一)-系统(DataAnnotations)


    要使用验证,首先,web.config要开户验证:

      <appSettings>
        <add key="ClientValidationEnabled" value="true" />
        <add key="UnobtrusiveJavaScriptEnabled" value="true" />
      </appSettings>

    1、基础验证:

    using System.ComponentModel.DataAnnotations;
    
    //字段显示名称
    [Display(Name = "用户名")]
    
    //数据类型(比如生成的文本框的类型)
    [DataType(DataType.Password)]
    
    //非空验证
    [Required(ErrorMessage = "*")]
    
    //字符长度验证
    [StringLength(50, ErrorMessage = "字符长度应在6-50之间", MinimumLength = 6)]
    
    //验证范围
    [Range(10, 120, ErrorMessage = "年龄应在10-120之间")]
    
    //正则表达式验证
    [RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9._]+.[A-Za-z]{2,4}", ErrorMessage = "邮箱格式不正确")]
    
    //邮箱格式验证
    [EmailAddress(ErrorMessage = "邮箱格式不正确")]
    
    //比较验证
    [Compare("Password", ErrorMessage = "密码不一致")]
     public string PasswordConfirm { get; set; }

    其中:ErrorMessage里面是自定义错误信息,如果不加这个属性,将显示系统默认的提示错误信息(系统提示比较生硬可能),一般都加上这个属性。 

         ErrorMessage允许开发者使用{0}占位符来显示字段的显示名(即[Display(Name = "用户名")]),如果没有Display特性,那么会显示属性名。如:

    [Required(ErrorMessage = "{0}不能为空!")]
    [Display(Name = "用户名")]
    public string UserName { get; set; }    

         如果验证的特性中还有其他参数,那么ErrorMessage可以用占位符直接显示其他参数,如:

    [Required]
    [StringLength(100, ErrorMessage = "请输入{2}到{1}位的{0}。", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "密码")]
    public string Password { get; set; }
    //系统会提示:“请输入6到100位的密码”。

    2、附加验证:

    附加验证是System.Web.Mvc中额外添加的验证特性,所以使用时必须添加using System.Web.Mvc

    Remote(远程验证,即ajax验证)
            虽然asp.net mvc3提供了很多在model中直接验证数据的特性,但是很多逻辑复杂的验证没办法在model中来验证,所以mvc3框架提供了这个远程验证特性,他允许开发者在Controller中用C#代码来验证数据的有效性。
            一个很经典的应用时验证用户名是否重复。这个数据验证没办法在客户端验证,除非将所有的用户名都发往客户端(显然这是不可能的)。所以Remote特性只进行服务器端验证。但是它是通过异步的方式进行验证,所以有更好的用户体验。
    Model:
            [Required]
            [Display(Name = "用户名")]
            [Remote("CheckUserName","Account")]
            public string UserName { get; set; }

    Controller:

            public JsonResult CheckUserName(string userName)
            {
                var result = userName == "admin";
                return Json(result, JsonRequestBehavior.AllowGet);
            }

     验证结果:

     

     注意:如果要Post提交,则需要加上HttpMethod=“POST”:

            [Display(Name = "用户名")]
            [Remote("CheckUserName","Account", HttpMethod="POST")]
            public string UserName { get; set; }

    而Controller中也可以直接接受Post的请求,当然你加上[Httppost]也是可以的:

            //[HttpPost]
            public JsonResult CheckUserName(string userName)
            {
                var result = userName != "admin";
                return Json(result, JsonRequestBehavior.AllowGet);
            }

    注意:远程验证控制器(remote)方法参数必须和view model中需要远程验证的属性一致,但不区分大小写。而且Remote验证是通过get方式请求的。

    上面的是mvc框架的几种常用的数据注解,除了remote是mvc特有的特性,其他的特性都在System.ComponentModel.DataAnnotations中。

  • 相关阅读:
    java 动态代理
    android中几个很有用的的api
    android 静态和动态设置 Receiver的 android:enabled值
    一个文件查看你选择 Run as Android applications 都干了啥
    ViewStub 的使用
    Linux 常用命令速查
    android自定义View&&简单布局&&回调方法
    西厢记 随笔
    git 命令使用速查手册( 个人版)
    Arraylist源码分析:
  • 原文地址:https://www.cnblogs.com/yaosuc/p/4527886.html
Copyright © 2020-2023  润新知