要使用验证,首先,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(, ErrorMessage = "字符长度应在6-50之间", MinimumLength = )] //验证范围
[Range(, , 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(, ErrorMessage = "请输入{2}到{1}位的{0}。", MinimumLength = )]
[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中。

MVC-Model数据注解(一)-系统(DataAnnotations)的更多相关文章

  1. MVC Model 数据注解与验证

    常用验证特性: using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Sch ...

  2. model 数据注解

    https://www.cnblogs.com/leoxuan/articles/6555396.html ASP.NET MVC5中Model层开发,使用的数据注解有三个作用: 数据映射(把Mode ...

  3. .NET MVC model数据验证

    MVC提供了很方便的数据验证,只需要在model里加入相关的正则等,那么就会在前台里生成相关的验证脚本.需要引用两个js文件: jquery.validate.min.js jquery.valida ...

  4. MVC Model数据验证

    概述 上节我们学习了Model的数据在界面之间的传递,但是很多时候,我们在数据传递的时候为了确保数据的有效性,不得不给Model的相关属性做基本的数据验证. 本节我们就学习如何使用 System.Co ...

  5. asp.net mvc常用的数据注解和验证以及entity framework数据映射

    终于有时间整理一下asp.net mvc 和 entity framework 方面的素材了. 闲话少说,步入正题: 下面是model层的管理员信息表,也是大伙比较常用到的,看看下面的代码大伙应该不会 ...

  6. 【第二篇】ASP.NET MVC快速入门之数据注解(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  7. MVC5中Model层开发数据注解 EF Code First Migrations数据库迁移 C# 常用对象的的修饰符 C# 静态构造函数 MSSQL2005数据库自动备份问题(到同一个局域网上的另一台电脑上) MVC 的HTTP请求

    MVC5中Model层开发数据注解   ASP.NET MVC5中Model层开发,使用的数据注解有三个作用: 数据映射(把Model层的类用EntityFramework映射成对应的表) 数据验证( ...

  8. APS.NET MVC + EF (08)---数据注解和验证

    对于Web开发人员来说,用户输入验证一直是一个挑战.不仅在客户端浏览器中需要执行验证逻辑,在服务器端也需要执行.如果觉得验证是令人望而生畏的繁杂琐事,ASP.NET MVC框架提供了数据注解的方式帮助 ...

  9. 数据注解和验证 – ASP.NET MVC 4 系列

           不仅在客户端浏览器中需要执行验证逻辑,在服务器端也需要执行.客户端验证能即时给出一个错误反馈(阻止请求发送至服务器),是时下 Web 应用程序所期望的特性.服务器端验证,主要是因为来自网 ...

随机推荐

  1. mysql中不同事务隔离级别下数据的显示效果--转载

    事务是一组原子性的SQL查询语句,也可以被看做一个工作单元.如果数据库引擎能够成功地对数据库应用所有的查询语句,它就会执行所有查询,如果任何一条查询语句因为崩溃或其他原因而无法执行,那么所有的语句就都 ...

  2. How to Analyze Java Thread Dumps--reference

    原文地址:http://architects.dzone.com/articles/how-analyze-java-thread-dumps The Performance Zone is pres ...

  3. 手把手教你反编译别人的app

    虽然iOS系统相比于其他手机操作系统相对安全,但是这个安全并不是绝对的,我一直相信,道高一尺魔高一丈.此文想以实际例子出发,告诉大家,如何去反编译一个app,并且从某个角度来说,iOS没有传说中的“安 ...

  4. Android View的绘制机制流程深入详解(二)

    本系列文章主要着重深入介绍Android View的绘制机制及流程,第二篇主要介绍并分析Android视图的绘制的原理和流程.主要从 onMeasure().onLayout()和onDraw()这三 ...

  5. How the Kernel Manages Your Memory

    http://duartes.org/gustavo/blog/post/how-the-kernel-manages-your-memory/ After examining the virtual ...

  6. ReentrantLock和synchronized的区别

    一.ReentrantLock类 ReentrantLock 类实现了 Lock ,它拥有与 synchronized 相同的并发性和内存语义,但是添加了类似锁投票.定时锁等候和可中断锁等候的一些特性 ...

  7. 【转】monkeyrunner学习总结二:连接、安装、启动

    一.获取packageName与startActivity 前置条件:已成功安装配置SL4A并连接PC调试(参见:monkeyrunner学习总结一:环境搭建:http://www.amsoft.cn ...

  8. 浅谈用java解析xml文档(一)

    关于xml本身的语法及使用的环境不多说了,网上有很多规则, 然对xml文档进行解析,一般分为四种解析方式,基于java官方文档的Dom 和Sax解析,还有就是基于 第三方jar包的 Jdom 和 Do ...

  9. Atom编辑器入门到精通(六) Markdown支持

    尽管我们使用Atom主要是为了编写代码,不过Atom还支持编辑很多其他格式的文件. 比如Markdown和Asciidoc. 这一章中我们主要学习如何快速方便地编辑Markdown文件.另外在写这篇博 ...

  10. Android之Http网络编程(四)

    前面几篇博文简单的介绍了一些常见的Http的操作,这些操作几乎都是在新开的线程中进行的网络请求,并在日志中打印出获取到的网络数据.那么,问题来了!(呃~感觉下一句是蓝翔有木有?)如何在把获取到的网络数 ...