MVC3 Model Binding验证方式
1、使用ModelState在Action中进行验证
- [HttpPost]
- public ViewResult MakeBooking(Appointment appt) {
- if (string.IsNullOrEmpty(appt.ClientName)) {
- ModelState.AddModelError("ClientName", "Please enter your name");
- }
- if (ModelState.IsValidField("Date") && DateTime.Now > appt.Date) {
- ModelState.AddModelError("Date", "Please enter a date in the future");
- }
- if (!appt.TermsAccepted) {
- ModelState.AddModelError("TermsAccepted", "You must accept the terms");
- }
- if (ModelState.IsValid) {
- return View("Completed", appt);
- } else {
- return View();
- }
- }
2、Model元数据验证
- [DisplayName("用户名")]
- [Required(ErrorMessage = "请输入用户名")]
- public string UserName { get; set; }
- [DisplayName("是否删除")]
- [Required]
- public int? IsDelete { get; set; }
- [DisplayName("用户状态")]
- [Required]
- public int? UserStatus { get; set; }
- [DisplayName("初始日期")]
- [Required]
- [DataType(DataType.Date)]
- [DateRange("2014-03-01", "2014-05-01")]
- public DateTime? BirthDate { get; set; }
- [DisplayName("创建日期")]
- [Required]
- [DataType(DataType.Date)]
- public DateTime? CreateTime { get; set; }
- 自定义验证,主要是实现ValidationAttribute类的IsValid方法,下面的类定义了对输入时间范围的验证
- public class DateRangeAttribute : ValidationAttribute
- {
- private string begin;
- private string end;
- public DateRangeAttribute(string begin, string end)
- {
- this.begin = begin;
- this.end = end;
- }
- public override bool IsValid(object value)
- {
- DateTime dtBegin;
- DateTime dtEnd;
- DateTime dtValue;
- if (value == null || !DateTime.TryParse(value.ToString(), out dtValue))
- {
- ErrorMessage = "错误的输入日期格式";
- return false;
- }
- if (!DateTime.TryParse(begin.ToString(), out dtBegin))
- {
- ErrorMessage = "错误的开始日期格式";
- return false;
- }
- if (!DateTime.TryParse(end.ToString(), out dtEnd))
- {
- ErrorMessage = "错误的结束日期格式";
- return false;
- }
- if (dtValue < dtBegin || dtValue > dtEnd)
- {
- ErrorMessage = string.Format("输入日期必须大于{0}并且大于{1}", begin.ToString(), end.ToString());
- return false;
- }
- return true;
- //return base.IsValid(value);
- }
- 3、实现IValidatableObject接口,实现单独方法验证
- public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
- {
- UserInfoViewModel userInfo = validationContext.ObjectInstance as UserInfoViewModel;
- if (null == userInfo)
- {
- yield break;
- }
- if (string.IsNullOrEmpty(userInfo.UserName))
- {
- yield return new ValidationResult("'UserName'是必需字段", new string[] { "UserName" });
- }
- if (userInfo.UserName != "")
- {
- yield return new ValidationResult("'UserName'必须为123", new string[] { "UserName" });
- }
- }
- 4、启动客户端验证
4.1 配置文件
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
4.2 View
@Html.ValidationSummary(true)
@Html.LabelFor(m => m.BirthDate):
@Html.EditorFor(m => m.BirthDate)
@Html.ValidationMessageFor(m => m.BirthDate)
- 4.3 生成的Html代码
- <input class="text-box single-line input-validation-error" data-val="true" data-val-number="字段 是否删除 必须是一个数字。" data-val-required="是否删除 字段是必需的。" id="IsDelete" name="IsDelete" type="text" value="0">
MVC3 Model Binding验证方式的更多相关文章
- ASP.NET MVC3 Model验证总结 @Html.ValidationSummary(true)
http://www.wyjexplorer.cn/Post/2012/8/3/model-validation-in-aspnet-mvc3 ASP.NET MVC3中的Model是自验证的,这是通 ...
- ASP.NET MVC3 Model验证总结
ASP.NET MVC3中的Model是自验证的,这是通过.NET4的System.ComponentModel.DataAnnotations命名空间完成的. 我们要做的只是给Model类的各属性加 ...
- ASP.NET MVC3 Model验证总结(转)
推荐: ASP.NET MVC的Model元数据与Model模板:预定义模板 http://www.cnblogs.com/artech/archive/2012/05/02/model-meta ...
- 转:ASP.NET MVC3 Model验证总结
http://www.wyjexplorer.cn/Post/2012/8/3/model-validation-in-aspnet-mvc3 ASP.NET MVC3中的Model是自验证的,这是通 ...
- ASP.NET MVC3 Dynamically added form fields model binding
Adding new Item to a list of items, inline is a very nice feature you can provide to your user. Thi ...
- 理解ASP.NET Core - 模型绑定&验证(Model Binding and Validation)
注:本文隶属于<理解ASP.NET Core>系列文章,请查看置顶博客或点击此处查看全文目录 模型绑定 什么是模型绑定?简单说就是将HTTP请求参数绑定到程序方法入参上,该变量可以是简单类 ...
- Model的验证
ModelValidator与ModelValidatorProvider ModelValidator public abstract class ModelValidator { public v ...
- asp.net mvc3 的数据验证(一)
原文:asp.net mvc3 的数据验证(一) 对于web开发人员来说,对用户输入的信息进行验证是一个重要但是繁琐的工作,而且很多开发者都会忽略.asp.net mvc3框架使用的是叫做“ ...
- C# 中参数验证方式的演变
一般在写方法的时候,第一步就是进行参数验证,这也体现了编码者的细心和缜密,但是在很多时候这个过程很枯燥和乏味,比如在拿到一个API设计文档的时候,通常会规定类型参数是否允许为空,如果是字符可能有长度限 ...
随机推荐
- jQuery中append、insertBefore、after与insertAfter方法注意事项
这里列的是针对初学jQuery者来说容易搞不懂的部分,我在这里把这些方法列了个清单,希望大家能看的懂.如下: 方法 源包装集/字串 目标包装集体 特性描述 A.append(B) B A 若目标包装集 ...
- iOS 常用控件集合 完整项目
[Swift]高仿 爱范儿3.0 http://www.code4app.com/forum.php?mod=viewthread&tid=10053&page=1&extra ...
- (转)RabbitMQ 集群与高可用配置
集群概述 环境 配置步骤 集群概述 通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务 ...
- git服务器简易搭建法
受尽svn各种折磨的小伙伴都听说过git. 但是网上一搜索, 本来打算跟svn一样. 下一个服务器, 装下就可以开始用了. 没想到啊, 没想到. 居然需要Linux天赋点… 好吧, 拜鸟哥门下把Lin ...
- robots.txt用法
主要作用是告诉蜘蛛爬虫该网站下哪些内容能抓取,哪些内容不能抓取.虽然可以没有robots.txt这个文件,默认就抓取该网站的所有文件,对搜索引擎爬虫没有任何的影响,但是如果你想控制蜘蛛的检索间隔,你就 ...
- django_auth_ldap
使用django_auth_ldap来实现ldap和django自己的认证系统auth 下载插件 python-ldap和django_auth_ldap 配置settings.py 一些基本说明: ...
- 从new Function创建函数联想到MVC模式
我们知道任何一个自定义函数都是Function构造器的实例,所以我们可以通过new Function的方式来创建函数,使用语法很简单, new Function(形参1, 形参2, ..., 形参N, ...
- Microsoft Access Database Engine 2010 Redistributable Download
SQL Server 如需要导出类似Excel(*.xls.*.xlsx)格式的数据需要以来以下安装包 Microsoft Access 2010 数据库引擎可再发行程序包 此下载将安装一系列组件,帮 ...
- WebDev.WebServer40.exe已停止工作
今天写程序的遇到这个错误 错误的原因是代码中有死循环
- Java 图形编程 一:入门
package second; import java.awt.Color; import java.awt.Frame; import java.awt.event.WindowAdapter; i ...