【MVC】ASP.NET MVC之数据验证
前端传到后端数据的不可信任性,DRY("Don't Repeat Yourself") 设计原则。MVC3.0出了后端数据验证特性,鼓励你只定义一次功能或行为,然后在应用程序中各处进行使用。这会大大减少需要编写的代码量,使你的代码不容易出错,更便于测试和维护。
System.ComponentModel.DataAnnotations 命名空间提供定义 ASP.NET MVC 和 ASP.NET 数据控件的类的特性。
| AssociationAttribute |
指定实体成员表示数据关系(如外键关系)。 |
| CompareAttribute |
提供用于比较两个属性的特性。 |
| ConcurrencyCheckAttribute |
指定属性参与乐观并发检查。 |
| CreditCardAttribute |
指定数据字段值是信用卡号。 |
| CustomValidationAttribute |
指定用于验证属性或类实例的自定义验证方法。 |
| DataTypeAttribute |
指定要与数据字段关联的其他类型的名称。 |
| DisplayAttribute |
提供允许为实体分部类的类型和成员指定可本地化字符串的通用特性。 |
| DisplayColumnAttribute |
指定作为外键列显示在被引用表中的列。 |
| DisplayFormatAttribute |
指定 ASP.NET 动态数据如何显示数据字段以及如何设置数据字段的格式。 |
| EditableAttribute |
指示数据字段是否可编辑。 |
| EmailAddressAttribute |
验证电子邮件地址。 |
| EnumDataTypeAttribute |
启用 .NET Framework 枚举,以映射到数据列。 |
| FileExtensionsAttribute |
验证文件扩展名。 |
| FilterUIHintAttribute |
表示用于指定列的筛选行为的特性。 |
| KeyAttribute |
表示唯一标识实体的一个或多个属性。 |
| MaxLengthAttribute |
指定属性中允许的数组或字符串数据的最大长度。 |
| MinLengthAttribute |
指定属性中允许的数组或字符串数据的最小长度。 |
| PhoneAttribute |
指定数据字段值是格式标准的电话号码。 |
| RangeAttribute |
为数据字段的值指定数值范围约束。 |
| RegularExpressionAttribute |
指定 ASP.NET 动态数据中的数据字段值必须与指定的正则表达式匹配。 |
| RequiredAttribute |
指定数据字段值是必需的。 |
| ScaffoldColumnAttribute |
指定类或数据列是否使用基架。 |
| StringLengthAttribute |
指定数据字段中允许的字符的最小长度和最大长度。 |
| TimestampAttribute |
列的数据类型指定为行版本。 |
| UIHintAttribute |
指定动态数据用来显示数据字段的模板或用户控件。 |
| UrlAttribute |
提供 URL 验证。 |
| ValidationAttribute |
充当所有验证特性的基类。 |
| ValidationContext |
描述执行验证检查的上下文。 |
| ValidationException |
表示在使用 ValidationAttribute 类的情况下验证数据字段时发生的异常。 |
| ValidationResult |
表示验证请求的结果的容器。 |
| Validator |
定义一个帮助器类,在与对象、属性和方法关联的 ValidationAttribute 特性中包含此类时,可使用此类来验证这些项。 |
Controller层数据验证:
if (!ModelState.IsValid)
{
var errorList = ModelState.Values.Where(t => t.Errors.Count > )
.Select(t => t.Errors).ToList();
string errorMessage = "以下字段验证无效:" + "<br/>";
errorList.ForEach(t => { errorMessage += t[]?.ErrorMessage + "<br/>"; }); return FailureResult(errorMessage);
}
ViewModel:
public class TestViewModel
{
//Required默认为不允许为空。允许为空则添加AllowEmptyStrings = true
[Required(AllowEmptyStrings = true)]
[StringLength(, ErrorMessage = "密码不能超过20个字符")]
public string Password { get; set; } [Compare("Password", ErrorMessage = "两次输入的密码不一致")]
public string PasswordConfirm { get; set; } [Range(, , ErrorMessage = "年龄取值范围0-120")]
public int Age { set; get; } [RegularExpression(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$", ErrorMessage = "邮箱格式不正确")]
public string Email { get; set; } [Range(typeof(DateTime), "2000-01-01", "2099-12-31",ErrorMessage = "日期范围{0}-{1}")]
public DateTime AsOfDate { get; set; } [Range(typeof(decimal), "", "", ErrorMessage = "票息范围{0}-{1}")]
public decimal CouponRate { get; set; } [StringLength(, MinimumLength = , ErrorMessage = "最少{0}位,最多{1}位")]
public string Method { get; set; } [DataType(DataType.DateTime)]
public DateTime Date { get; set; } [FileExtensions(Extensions = "jpg,jpeg",ErrorMessage="扩展名必须为{0}")]
public string FileName { get; set; } [CountryName(ErrorMessage="国家必须填写中国")]
public string Country { get; set; }
} /// <summary>
/// 自定义验证特性 继承ValidationAttribute
/// </summary>
public class CountryNameAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
return (string) value == "中国";
}
}
多语言下的资源文件自定义错误:

<data name="Com0000000080" xml:space="preserve">
<value>总数范围:{1}-{2} !</value>
</data>
【MVC】ASP.NET MVC之数据验证的更多相关文章
- asp.net mvc3 的数据验证(一)
原文:asp.net mvc3 的数据验证(一) 对于web开发人员来说,对用户输入的信息进行验证是一个重要但是繁琐的工作,而且很多开发者都会忽略.asp.net mvc3框架使用的是叫做“ ...
- [Asp.net mvc]Asp.net mvc 中使用LocalStorage
目前使用比较多的本地存储方案有比如Flash SharedObject.Google Gears.Cookie.LocalStorage.User Data.Open Database等方案.综合比较 ...
- MVC ASP.NET MVC各个版本的区别
ASP.NET MVC各个版本的区别 Net Framework4.5是不支持安装在window server 2003上,如非装请用net framework4.0; MVC1.0 publsh t ...
- [Asp.net mvc]Asp.net mvc 使用Json传递数据
在之前的练习中一直是直接传递的Model到后台或是单个数据到后台,今天在使用中遇到了点问题,不能使用Model传递到后台,但又要实现多个数据到后台,实验了多次有了以下的解决方案,给自己留个笔记. 功能 ...
- c# MVC模式学习笔记_数据验证
改变显示字段名称 设计字段规范 1.引用 using System.ComponentModel; using System.ComponentModel.DataAnnotations; 2.Dis ...
- [Asp.net mvc] Asp.net mvc Kendo UI Grid的使用(四)
有段时间没写博客了,工作状态比较忙,抽空继续总结下Grid的使用,这次主要介绍模板以及其他官网介绍不详尽的使用方法.先Show出数据,然后讲解下.后台代码: public ActionResult O ...
- ASP.NET Web API 数据验证
第一种方式单独为每一个Action做验证 // POST api/values public HttpResponseMessage Post([FromBody]UserInfo userInfo) ...
- 在ASP.NET 中有哪些数据验证控件(请解释ASP.NET中以什么方式进行数据验证)?
(1)RequiredFieldValidator:检查用户是否输入: (2)CompareValidator:检查两个表单输入项的输入信息是否存在某种指定关系,比如大.等于等: (3)RangeVa ...
- MVC ASP.NET MVC各个版本的区别 (转)
Net Framework4.5是不支持安装在window server 2003上,如非装请用net framework4.0; MVC1.0 publsh time:2008 IDEV:VS200 ...
- <转>ASP.NET学习笔记之MVC 3 数据验证 Model Validation 详解
MVC 3 数据验证 Model Validation 详解 再附加一些比较好的验证详解:(以下均为引用) 1.asp.net mvc3 的数据验证(一) - zhangkai2237 - 博客园 ...
随机推荐
- Virtual Memory is deprecated in Redis 2.4
在读一个源码的讲解的文章时或者读一本关于某个技术的数据集时,可能书籍的讲解是滞后的,就是没有更上最新的代码,那么就要注意了WARNING! Virtual Memory is deprecated i ...
- python 使用 PIL 和 matplotlib 获取图片像素点处理之后再写入
python 版本 3.x 首先安装 PIL 由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python 3.x,又 ...
- 2018-2019-2 网络对抗技术 20165321 Exp1 PC平台逆向破解
1. 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串.该程序 ...
- 第九届蓝桥杯C/C++B组省赛感想
因为做了近三年的初赛题,都对了5题+,所以这次比赛前信心满满,心里想最少水个省二没问题.可我怎么知道今年的套路居然和以前不一样了!一题深搜都没有,想想一周前做的第七届初赛题,10题有3.4题深搜题. ...
- 面试 -- 关于Activity的相关知识
本篇文章就是记录关于简单的Activity中的问题 问题一:当Activity中存在两个注册的Activity都是主界面的话,应用程序会报错吗?如果不报错,会把那个Activity当做主界面执行 &l ...
- Centos7 安装redis
1.下载redis安装包 wget http://download.redis.io/releases/redis-4.0.9.tar.gz 2.检查及下载gcc gcc -v yum -y inst ...
- Sed工作原理
Sed工作原理 sed是一个非交互式的流编辑器.所谓非交互式,是指使用sed只能在命令行下输入编辑命令来编辑文本,然后在屏幕上查看输出:而所谓流编辑器,是指sed每次只从文件(或输入)读入一行,然 ...
- laravel 自动加载 自定义的文件/辅助函数
需求 在 laravel 中自定义了一些 辅助函数,想要laravel框架自动加载这些函数 实现 将自定义的辅助函数放在helpers.php文件中,如下: 在compsoer.json 的 auto ...
- Jmeter二次开发
Jmater函数扩展的步骤1. 导入Jmeter源码,或使用maven项目,引入依赖的jar包 2. 继承AbstractFunction,实现自定义Function 3. 继承JMeterTestC ...
- MySQL 压缩文件安装遇到的问题及解决方案
第一步:从官网下载压缩文件(链接). 第二步:解压该文件,放置到想放到的位置.我的目录是在 C:\mysql\mysql-8.0.12-winx64 下. 第三步:在C:\mysql\mysql-8. ...