【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 - 博客园 ...
随机推荐
- Redis集群方案怎么做?
转载自:https://www.jianshu.com/p/1ecbd1a88924 Redis集群方案 Redis数据量日益增大,而且使用的公司越来越多,不仅用于做缓存,同时趋向于存储这块,这样必促 ...
- JAVA判断是否是手机设备访问
package com.common.util; import java.util.regex.Matcher;import java.util.regex.Pattern; /** * 检测是否为移 ...
- visual studio 启动报 activityLog.xml文件 错误
1.在安装目录里面找到 devenv.exe 这个文件的所在位置C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE 2.点击左下角图标, ...
- OO第二单元电梯线程系列总结作业
电梯系列第一次作业 功能描述: 傻瓜电梯无需考虑超载捎带 线程模式: Producer-Consumer Pattern 思路: 第一次作业是一个傻瓜电梯,分别有一个生产者生成电梯指令(也就是Inpu ...
- python运算符和数据类型的可变性
一.运算符 计算机可以进行的运算有很多种,不只是加减乘除,它和我们人脑一样,也可以做很多运算. 种类:算术运算,比较运算,逻辑运算,赋值运算,成员运算,身份运算,位运算,今天我们先了解前四个. 算术运 ...
- Oracle exp和expdp对数据进行备份
以下给出两个示例,详细内容需要查阅手册: exp system OWNER=ZLTX FILE=ZLTX20190123.DMP expdp system DUMPFILE=ZLTX20190123. ...
- 搭建本地yum仓库(centos 7.5)
1. 保留下载的软件包 [root@zabbix-server01 ~]# vim /etc/yum.conf keepcache=1 #开启后下载的软件都会保存到本地 2.将软件进行下载,并将所有r ...
- 用 webpack 创建 vue 项目
1.安装支持webpack 包 npm i -D webpack webpack-cli aspnet-webpack webpack-dev-middleware webpack-hot-mi ...
- 关于LinQ中“from"前置的原因
原文地址:http://blog.csdn.net/yuzifen/article/details/6754003 概括来说是:为了IDE的智能感知(Intelisence)功能,(或说为了进行类型推 ...
- textspan 转连接
import 'package:flutter/material.dart'; import 'package:flutter/gestures.dart'; import 'package:url_ ...