前端传到后端数据的不可信任性,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 特性中包含此类时,可使用此类来验证这些项。

core微软官方文档

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之数据验证的更多相关文章

  1. asp.net mvc3 的数据验证(一)

    原文:asp.net mvc3 的数据验证(一)      对于web开发人员来说,对用户输入的信息进行验证是一个重要但是繁琐的工作,而且很多开发者都会忽略.asp.net mvc3框架使用的是叫做“ ...

  2. [Asp.net mvc]Asp.net mvc 中使用LocalStorage

    目前使用比较多的本地存储方案有比如Flash SharedObject.Google Gears.Cookie.LocalStorage.User Data.Open Database等方案.综合比较 ...

  3. MVC ASP.NET MVC各个版本的区别

    ASP.NET MVC各个版本的区别 Net Framework4.5是不支持安装在window server 2003上,如非装请用net framework4.0; MVC1.0 publsh t ...

  4. [Asp.net mvc]Asp.net mvc 使用Json传递数据

    在之前的练习中一直是直接传递的Model到后台或是单个数据到后台,今天在使用中遇到了点问题,不能使用Model传递到后台,但又要实现多个数据到后台,实验了多次有了以下的解决方案,给自己留个笔记. 功能 ...

  5. c# MVC模式学习笔记_数据验证

    改变显示字段名称 设计字段规范 1.引用 using System.ComponentModel; using System.ComponentModel.DataAnnotations; 2.Dis ...

  6. [Asp.net mvc] Asp.net mvc Kendo UI Grid的使用(四)

    有段时间没写博客了,工作状态比较忙,抽空继续总结下Grid的使用,这次主要介绍模板以及其他官网介绍不详尽的使用方法.先Show出数据,然后讲解下.后台代码: public ActionResult O ...

  7. ASP.NET Web API 数据验证

    第一种方式单独为每一个Action做验证 // POST api/values public HttpResponseMessage Post([FromBody]UserInfo userInfo) ...

  8. 在ASP.NET 中有哪些数据验证控件(请解释ASP.NET中以什么方式进行数据验证)?

    (1)RequiredFieldValidator:检查用户是否输入: (2)CompareValidator:检查两个表单输入项的输入信息是否存在某种指定关系,比如大.等于等: (3)RangeVa ...

  9. MVC ASP.NET MVC各个版本的区别 (转)

    Net Framework4.5是不支持安装在window server 2003上,如非装请用net framework4.0; MVC1.0 publsh time:2008 IDEV:VS200 ...

  10. <转>ASP.NET学习笔记之MVC 3 数据验证 Model Validation 详解

    MVC 3 数据验证 Model Validation 详解  再附加一些比较好的验证详解:(以下均为引用) 1.asp.net mvc3 的数据验证(一) - zhangkai2237 - 博客园 ...

随机推荐

  1. [LeetCode] 45. Jump Game II_ Hard tag: Dynamic Programming

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  2. FB面经Prepare: Friends Recommendation

    有个getFriend() API, 让你推荐你的朋友的朋友做你的朋友,当然这个新朋友不能是你原来的老朋友 package fb; import java.util.*; public class R ...

  3. hibernate连接数据库和使用

    hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibe ...

  4. mysql获取连接connection失败

    好久不写jdbc了,今天写了个小东西,数据库连接失败,错误信息如下: java.sql.SQLException: The server time zone value '???ú±ê×??±??' ...

  5. Linux定时任务调用sh文件

    1.编写sh文件 创建:vi test.sh 写入:date >> /xiaol/data.txt 2.默认创建的这个sh问件是没有执行权限的,修改权限 chmod 777 test.sh ...

  6. Ajax请求二进制流并在页面展示

    后端代码: public void getIntegralQrcode(HttpServletResponse response, String token) throws BizException, ...

  7. MacBook Pro App Store无法下载和更新软件解决方案

    环境:MacBook Pro 2017 系统:MacOS 10.14 问题:在App Store中无法下载和更新软件,输入App Store密码后,弹出如下对话框 咨询苹果官方技术支持电话:400-6 ...

  8. PHP获取汉字首字母函数

    <?php function getFirstCharter($str) { if (empty($str)) { return ''; } $fchar = ord($str{0}); if ...

  9. tomcat是什么?Tomcat 下载、安装、配置图文教程

    你用浏览器上网的所有操作,所有请求发送给服务器(tomcat),服务器通过请求,找相应的逻辑处理程序(jsp或servelet或java类,就是有关java语言的所有可以处理逻辑的代码,其中包括访问后 ...

  10. Flask实战-留言板-使用Faker生成虚拟数据

    使用Faker生成虚拟数据 创建虚拟数据是编写Web程序时的常见需求.在简单的场景下,我们可以手动创建一些虚拟数据,但更方便的选择是使用第三方库实现.流行的python虚拟数据生成工具有Mimesis ...