MVC中的验证和异常处理以及手工激活验证
不管是通过action参数获取一个model,或者是手工calling UpdateModel()还是TryUpdateModel(),默认的DefaultModelBinder都将自动执行合法验证。但是,你用其他的方法更新model时,自动验证则会跳过。例如:
public ActionResult MakeBooking(string clientName, DateTime? appointmentDate,
bool acceptsTerms)
{
var appt = new Appointment {
ClientName = clientName,
AppointmentDate = appointmentDate.GetValueOrDefault()
};
if (!acceptsTerms)
ModelState.AddModelError("acceptsTerms", "You must accept the terms");
if (ModelState.IsValid) {
// To do: Actually save the appointment to the database or whatever
//绕过验证
return View("Completed", appt);
}
else
return View(); // Re-renders the same view so the user can fix the errors
}
Controller基类提供了两个基本方法让我们手工触发验证
• ValidateModel() 验证,如果不合法,将登记错误,并抛出 InvalidOperationException异常
.
• TryValidateModel() 相对ValidateModel区别在于不抛出异常,只是返回和ModeState.IsValide一样的值。
MVC中的验证和异常处理以及手工激活验证相关推荐
- MVC中获取模型属性的Range和StringLength验证特性设置
MVC中的客户端及服务端模型验证信息都以ModelMetadata类型作为承载,在获得属性的ModelMetadata之后(还不知道怎么获取ModelMetadata的童鞋请自行恶补),我们可以轻松得 ...
- ASP.NET MVC中,通用的异常处理
当web.config中的 <customErrors mode="Off"/>设置为关闭的时候,只能依赖Global.asax.cs中的Application_Err ...
- 在Asp.Net MVC中实现RequiredIf标签对Model中的属性进行验证
在Asp.Net MVC中可以用继承ValidationAttribute的方式,自定制实现RequiredIf标签对Model中的属性进行验证 具体场景为:某一属性是否允许为null的验证,要根据另 ...
- ASP.NET的MVC中使用Cookie做身份验证(附代码下载)
场景 ASP.NET的MVC中使用Session做身份验证(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1071 ...
- MVC中的统一验证机制~续
前段时间我发表的关于MVC架构中对验证方式的设计,收到了不少朋友的留言,意思是说过于复杂,复用性不高,当然我的出发点是减少实体部门的代码量. 最近在朋友的建议下,看了另一种验证方式,事实上就是MVC实 ...
- asp.net mvc中的后台验证
asp.net mvc的验证包含后台验证和前端验证.后台验证主要通过数据注解的形式实现对model中属性的验证,其验证过程发生在model绑定的过程中.前端验证是通过结合jquery.validate ...
- MVC中 数据底层联合JQUERY实现动态的安全的验证机制
实体的验证分部类定义如下 前台controller里进行数据有效性的验证,成功就进行数据处理,不成功就返回错误 前台页面配合JQuery强大的验证功能,实现动态验证 MVC集成表单验证输出单元,显示验 ...
- ASP.NET MVC中的身份验证
传统的登录验证方式,是通过将用户的登录状态信息保存在服务端的Session中,再利用客户端浏览器的Cookie保存SessionID,这样浏览器每次在向服务端发起请求时,都会携带该Cookie值,服务 ...
- ASP.NET Core MVC 中的模型验证
数据模型的验证被视为是数据合法性的第一步,要求满足类型.长度.校验等规则,有了MVC的模型校验能够省却很多前后端代码,为代码的简洁性也做出了不少贡献. 原文地址:https://docs.micros ...
最新文章
- python学习——01循环控制
- Ratatosk - Hybrid error correction of long reads enables accurate variant calling and assembly
- Android AIDL示例-回调方法版
- Adobe Premiere Elements 2021中文版
- 如何查看Eclipse版本
- sphinx搜索结果按权重排序php,Sphinx Ranking Mode(排序模式) (翻译)
- Swift开发实例:苹果Swift编程语言新手教程中文版+FlappyBird,2048游戏源代码
- C 语言:春节回家聚会,只有我没带对象!
- linux 11Gasm启动crs,11GR2重建CRS
- Java中的Arrays类使用详解
- ORA-12638处理
- Overload和Override详解
- [教程] 写号+上3G成功,附个人经验补充,写号看此一贴即可,二楼附上radio恢复方法和recovery (来源于http://www.in189.com/thread-94957-1-1.htm)
- java输出星号图案_求助:如何用Java打印星号~~
- 日本经济泡沫与房价泡沫
- vistor和tsmserver不在同一台机器上的连接问题
- 【脚本项目源码】Python制作艺术签名生成器,打造专属你的个人艺术签名
- android 全选功能,Android Recyclerview实现多选,单选,全选,反选,批量删除的功能
- 弘辽科技:如何查看淘宝直通车排名?对手竞价怎么看?
- 8051单片机(STC89C52)倒计时器
热门文章
- ios 状态栏高度 底部tabbar高度
- php页面是什么原因,PHP空白页面常见原因及解决方法
- mysql1300错误什么意思_mysql error 1201-1300错误大全
- dw可以编辑java吗_为什么很多人说 Java 不适合编写桌面应用?
- conda安装tensorflow-gpu简洁版_笔记本的垃圾显卡也能装Tensorflow GPU版,简明教程
- 自定义拍照时 拍照界面_男子海边拍照时发现“金光闪闪”,走近查看后一夜暴富|戒指|沙土|包装膜...
- 使用TensorFlow1.0及以上版本的问题
- php注册表唯一电脑,PHP常见设计模式之注册表模式
- 值得收藏!脑科学、脑机接口领域白皮书、研究报告汇总
- 使用脑电图慢皮层电位重建3D空间中的手,肘和肩的实际和想象的轨迹