在实际开发中,项目经理会一直强调一句话,永远不要相信客户端的数据(前端可以不用验证,但是后端必须验证)。大家同意这样的说法吧。。新端验证毋庸质疑JS验证,提高用户体验我们不得不添加一些与后端一致的验证逻辑,同样的验证方式写两次对一个高端的攻城师来说 比不让他写代码还难受,幸好MVC提供了一套验证框架,解决了这个比较高疼的问题...

1、内置前端验证
  MVC无论是前端或后端验证,宗旨是不会变的,也就是Model,Model好比是通向两个河对岸的桥梁,前端验证也就是架在这个桥梁之上。其实实现前端验证很简单,只需要我们在Model(实体)对象上,添加我们要验证的属性就OK了。
  eg:针对用户Name,Age,Sex进行验证,Model配置如下:

  Razor视图配置如下:

  验证结果如下:没有发出任何请求,客户端验证没有通过
2、IClientValidatable接口
  IclientValidatablie接口是实现后端配置验证信息的提供者。用户信息登录性别条件为例,服务配置性别对象Sex只能为“男”“女”两种情况,那么我们如何告知前端,针对性别验证也只能是这两种咧??

3、自定义前端验证
  随着系统逐渐的庞大,系统自定的验证方式已经无法满足我们业务的需要,这时MVC框架提供了一个非常可怕的验证方法 供我们实现自定义的一套验证体系,实现前后端一套验证搞定一切的类与接口(ValidationAttribute,IClientValidatable)关于ValidationAttribute的用法不会用的攻城师们回头看看[MVC之参数验证(一)]。服务端将自定义的验证规则通过IClientValidatable接口提交给客户端后,那么客户端如何抓取此规则,生产一套通知的验证体系呢??这时我们要借肋MVC前验证JS文件。引用Query文件(jquery-1.7.1.min.js)、Jquery验证文件(jquery.validate.js)、Jquery验证适配器(jquery.validate.unobtrusive.js) 然后添加验证事件与相应的适配器信息。

完成之后将我们添加的JS代码引用到所需的页面上,看看执行结果。

MVC之参数验证(三)的更多相关文章

  1. MVC之参数验证(二)

    MVC内部针对这此验证是如何实现的咧???现在我们就来分析一下这此验证的背后故事.... 1.ModelValidator与ModelValidatorProvider 虽然Model绑定方式的因绑定 ...

  2. MVC之参数验证(一)

    ASP.NET MVC采用Model绑定为目标Action生成了相应的参数列表,但是在真正执行目标Action方法之前,还需要对绑定的参数实施验证以确保其数据的准确性.总地来说,我们可以采用Syste ...

  3. ASP.NET MVC Model验证(三)

    ASP.NET MVC Model验证(三) 前言 上篇中说到在MVC框架中默认的Model验证是在哪里验证的,还讲到DefaultModelBinder类型的内部执行的示意图,让大家可以看到默认的M ...

  4. JSR-303 Bean Validation 介绍及 Spring MVC 服务端参数验证最佳实践

    任何时候,当要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情. 应用程序必须通过某种手段来确保输入参数在上下文来说是正确的. 分层的应用很多时候同样的数据验证逻辑会出现在不同的层,这样 ...

  5. C# 中参数验证方式的演变

    一般在写方法的时候,第一步就是进行参数验证,这也体现了编码者的细心和缜密,但是在很多时候这个过程很枯燥和乏味,比如在拿到一个API设计文档的时候,通常会规定类型参数是否允许为空,如果是字符可能有长度限 ...

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

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

  7. C# 中参数验证方式

    C# 中参数验证方式 一般在写方法的时候,第一步就是进行参数验证,这也体现了编码者的细心和缜密,但是在很多时候这个过程很枯燥和乏味,比如在拿到一个API设计文档的时候,通常会规定类型参数是否允许为空, ...

  8. Asp.net mvc 知多少(三)

    本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...

  9. JSR-303 Bean Validation 介绍及 Spring MVC 服务端验证最佳实践

    任何时候,当要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情. 应用程序必须通过某种手段来确保输入参数在上下文来说是正确的. 分层的应用在很多时候,同样的数据验证逻辑会出现在不同的层, ...

随机推荐

  1. Ubuntu 16.04中XMind 8导致Java内存溢出的问题解决(硬盘卡死,桌面卡死)

    XMind使用的是Java进行开发,如果出现内存溢出的问题,那么一定是桌面快捷方式的问题,解决方法是直接修改快捷方式里面的内容,修改如下: [Desktop Entry] Encoding=UTF-8 ...

  2. Ionic3错误记录:navigation stack needs at least one root page

    BUG场景:在 ActionSheetController 使用modalCtrl.create 创建模态框时报如下错误 原代码片段 解决方式: 重新设置root page

  3. Mysql入门实战中

    前面一章主要解说了mysql的入门学习.包括数据库,表的管理,以及对数据的增删改,本章主要介绍mysql最重要的语句select的使用方法.将select的大部分使用方法进行分别解说. 全部代码下载( ...

  4. python中的is判断引用的对象是否一致,==判断值是否相等

    python中的is判断引用的对象是否一致,==判断值是否相等 a = 10 b = 20 list = [1,2,3,4,5] print(a in list) print(b not in lis ...

  5. linux设备驱动归纳总结(八):2.match.probe.remove

    linux设备驱动归纳总结(八):2.总线.设备和驱动的关系 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  6. python开发【第1篇】【基础知识】

    1.python解释执行原理 python代码——字节码——机器码——计算机 每次运行都要进行转换成字节码,然后再有虚拟机把字节码转换成机器语言,最后才能在硬件上运行. 2.python编码 unic ...

  7. OSX:不同OSX版本号的标记可能不兼容

    现象: 依据測试,中文OS X 10.9和中文10.10的文件标记彼此不兼容. 也就是说.比方在10.9中的颜色标记,在10.10DP2中不能删除,但能够加入/删除10.10自己的颜色标记,反之亦然. ...

  8. c# GDI+绘制不同字体的字符串

    一段字符串中可能既有汉字又有字母,对于汉字和字母分别采用不同的字体进行绘制直接po代码了 Bitmap bmp = new Bitmap(iWidth, iHeight); Graphics g = ...

  9. CI框架下的get_instance() 函数

    你随便下个CI框架的源码都会看到很多的get_instance() 函数,这个函数是用来获取CI 的全局超级对象,CI 是单例模式的框架,所有全局有一个超级对象.因为只有一个实例,所以无论这个函数使用 ...

  10. linux之安装软件出现Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)解决总结

    sudo rm -rf /var/lib/dpkg/lock sudo rm -rf /var/cache/apt/archives/lock