ASP.NET MVC2 数据模型验证类库:MVC Foolproof Validation
时间:2022-04-23
本文章向大家介绍ASP.NET MVC2 数据模型验证类库:MVC Foolproof Validation,主要内容包括启用客户端验证、复杂自定义验证、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
MVC Foolproof Validation是一个数据模型类库扩展。
操作符验证
1: public class SignUpViewModel
2: {
3: [Required]
4: public string Password { get; set; }
5:
6: [EqualTo("Password", ErrorMessage="Passwords do not match.")]
7: public string RetypePassword { get; set; }
8: }
9: public class EventViewModel
10: {
11: [Required]
12: public string Name { get; set; }
13:
14: [Required]
15: public DateTime Start { get; set; }
16:
17: [Required]
18: [GreaterThan("Start")]
19: public DateTime End { get; set; }
20: }
有效的操作符验证器
1: [Is]
2: [EqualTo]
3: [NotEqualTo]
4: [GreaterThan]
5: [LessThan]
6: [GreaterThanOrEqualTo]
7: [LessThanOrEqualTo]
非空验证
1: private class Person
2: {
3: [Required]
4: public string FirstName { get; set; }
5:
6: [Required]
7: public string LastName { get; set; }
8:
9: public bool Married { get; set; }
10:
11: [RequiredIfTrue("Married")]
12: public string MaidenName { get; set; }
13: }
条件非空验证
1: [RequiredIf]
2: [RequiredIfNot]
3: [RequiredIfTrue]
4: [RequiredIfFalse]
5: [RequiredIfEmpty]
6: [RequiredIfNotEmpty]
7: [RequiredIfRegExMatch]
8: [RequiredIfNotRegExMatch]
启用客户端验证
要启用客户端验证,必须包含标准的客户端验证文件和MvcFoolproofValidation.js文件:
1: <script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
2: <script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
3: <script src="../../Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>
4: <script src="../../Scripts/MvcFoolproofValidation.js" type="text/javascript"></script>
jQuery验证
如果使用jQuery验证,则必须包含标准的客户端验证文件和MvcFoolproofJQueryValidation.js文件:
1: <script src="../../Scripts/jquery.js" type="text/javascript"></script>
2: <script src="../../Scripts/jquery-validate.js" type="text/javascript"></script>
3: <script src="../../Scripts/MicrosoftMvcJQueryValidation.js" type="text/javascript"></script>
4: <script src="../../Scripts/MvcFoolproofJQueryValidation.js" type="text/javascript"></script>
复杂自定义验证
自定义验证属性:
1: public class RoleValidInDepartmentAttribute : ModelAwareValidationAttribute
2: {
3: //this is needed to register this attribute with foolproof's validator adapter
4: static RoleValidInDepartmentAttribute() { Register.Attribute(typeof(RoleValidInDepartmentAttribute)); }
5:
6: public override bool IsValid(object value, object container)
7: {
8: if (value != null && value.ToString() == "Software Developers")
9: {
10: //if the role was software developers, we need to make sure the user is in the IT department
11: var model = (CreateUserViewModel)container;
12: return model.Department == "IT Department";
13: }
14:
15: //the user wasn't in a constrained role, so just return true
16: return true;
17: }
18: }
应用到模型之中:
1: public class CreateUserViewModel
2: {
3: [Required]
4: public string Username { get; set; }
5:
6: [Required]
7: public string Department { get; set; }
8:
9: [Required]
10: [RoleValidInDepartment(ErrorMessage="This role isn't valid for the selected department.")]
11: public string Role { get; set; }
12: }
Foolproof Provides Contingent Data Annotation Validation for ASP.NET MVC 2
Build Model-Aware Custom Validation Attributes in ASP.NET MVC 2
Client Side Model-Aware Validation
官方地址:http://foolproof.codeplex.com
- Linux学习 - SED操作,awk的姊妹篇
- Android面试之高级篇
- 解密所有APP运行过程中的内部逻辑
- RecyclerView数据动态更新
- android PakageManagerService启动流程分析
- RFID入门:Mifare1智能水卡破解分析
- RecyclerView点击事件处理
- Python 实现一个火车票查询的工具
- HTTPS迎来春天:Chrome计划将所有HTTP标记为不安全
- View绘制流程
- Linux Rootkit系列一:LKM的基础编写及隐藏
- Swift基础语法(常量变量、数据类型、元组、可选、断言)
- 【实战】Python 读写 Excel 实例应用
- 10万WordPress网站沦陷:恶意软件SoakSoak来了
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- (一)python3 只需3小时带你轻松入门—— 编程尝试
- (二)python3 只需3小时带你轻松入门——基本变量
- (三)python3 只需3小时带你轻松入门—— 变量的简单运算
- (四)python3 只需3小时带你轻松入门—— 流程控制
- (五)python3 只需3小时带你轻松入门—— 逻辑运算符
- (六)python3 只需3小时带你轻松入门——循环
- (七)python3 只需3小时带你轻松入门——List与dict
- Rstudio支持可视化的Markdown编辑了?
- (八)python3 只需3小时带你轻松入门——List 与 dict 的常用操作
- (九)python3 只需3小时带你轻松入门——函数自定义
- (十)python3 只需3小时带你轻松入门——模块与包
- (十一)python3 只需3小时带你轻松入门——面向对象
- 一文读懂KEGG数据库
- (创建模式 上)设计模式——工厂、抽象工厂 C++/Python3实现
- 【新手宝典】一篇博文带萌新建站并了解建站体系流程和对萌新友好的便捷方式,这篇博文很有可能是你的启蒙文