我们在前端使用BoostrapValidator插件验证最基本的格式要求问题,同时在后台中,使用MVC特有的模型验证来做双重保险。对于boostrapValidator我就不说了,具体请看《bootstrap登入注册时表单验证实现》。而对于后端的模型验证这就是MVC的知识了,我也是好久以前研究过,现在都忘得差不多了,临时捡起来了,在这里我就详细说说。首先是我们的前端Razor页面也就是我们的cshtml页面需要引入实体类,假设实体类是UserModel类,它记录了最基本的用户名,密码,邮箱等。在前端的cshtml页面中我们引用这个类,然后就是正常的html结合bootstrap样式的前端代码编写,但是在这里建议使用UserModel类中的字段来命令标签的id和name属性,如果乱取名,MVC框架怎么来识别是哪个类?因此在这里建议id和name值都取作UserModel类的字段值。而后在标记了[HttpPost]的Action方法中,将UserModel用作参数传递进来,你就会发现前端的值已经绑定在了相应的字段上了。那么怎么来做后端验证呢?这就需要用到注解属性了。我们在UserModel类上根据我们的需要标注[Required][RegularExpression()]等注解属性。然后在action方法中使用:

ModelState.IsValid

来做判断,如果不满足要求,MVC框架的模型绑定会给我们将上面的值设置为false。接下来就是我们自己的判断了。
但是在这里要注意,前端的boostrapValidator插件不能和表单的submit()事件同时使用,举个例子:

$(function(){
$(form).boostrapValidator(....); $(form).submit(); //这两个不能同时使用,要不然不会提交表单到后台.
})

bootstrapValidator插件与form.submit()事件冲突,不知道为什么就是验证完之后就是不能提交表单,最好还是使用ajax提交吧。

同时在前端应该判断好bootstrapValidator是否验证通过再去提交表单。也就是说先判断bootstrapValidator.IsValid(),再去提交表单。

最好销毁bootstrapvalidator插件并重新加载验证的代码:

$("form").data("bootstrapValidator").destory();

$("form").data("bootstrapValidator", null);

参考:http://www.cnblogs.com/RegicideGod/archive/2013/02/04/2892451.html

双重保险——前端bootstrapValidator验证+后台MVC模型验证的更多相关文章

  1. ASP.NET MVC - 模型验证

    ASP.NET MVC - 模型验证(Model verification) 模型验证原理浅析 模型验证用到了模型绑定器.模型验证器(System.Web.Mvc.DataAnnotationsMod ...

  2. asp.net mvc 模型验证组件——FluentValidation

    asp.net mvc 模型验证组件——FluentValidation 示例 using FluentValidation; public class CustomerValidator: Abst ...

  3. 当ASP.NET MVC模型验证遇上CKEditor

    项目需要,使用到了CKEditor编辑器.这是个很不错的富文本编辑器,但是当它绑定的字段需要进行模型验证的时候,却会出现验证失效的问题.因此本文旨在记录这个问题和给出解决办法.以下以Validatio ...

  4. ASP.NET没有魔法——ASP.NET MVC 模型验证

    在前面的文章中介绍了用户的注册及登录功能,在注册用户时可以通过代码的形式限制用户名及密码的格式,如果不符合要求那么就无法完成操作,如下图: 该功能的原理是Identity基于的Entity Frame ...

  5. asp.net mvc 模型验证注解,表单提交

    一.添加模型 public class Account { public int ID { get; set; } [Display(Name = "姓名")] //设置要显示的字 ...

  6. asp.net mvc 模型验证-最舒服的验证方式

    在院子里发现 http://www.cnblogs.com/yangecnu/p/3759784.html 模型验证方法 1. 一般方法 繁琐, 无数的if else, 在炎炎夏天,我见过一个验证方法 ...

  7. Asp.Net MVC 模型验证详解-实现客户端、服务端双重验证

    概要 在asp.net webform开发中经常会对用户提交输入的信息进行校验,一般为了安全起见大家都会在客户端进行Javascript(利于交互).服务端双重校验(安全).书写校验代码是一个繁琐的过 ...

  8. mvc模型验证

    自定义的ValidationAttribute类, Compare   [Compare("MyOtherProperty")] 两个属性必须相同值,比如我们要求用户重复输入两次邮 ...

  9. mvc 模型验证及正则表达式

    ASP.NET MVC3中的Model是自验证的,这是通过.NET4的System.ComponentModel.DataAnnotations命名空间完成的. 我们要做的只是给Model类的各属性加 ...

随机推荐

  1. python 与mongodb 交互

    创建管理员 1 > use admin 2 switched to db admin 3 > db 4 admin 5 > db.createUser({user:'admin',p ...

  2. 使用Navicat快速生成数据库字典

    https://blog.csdn.net/maquealone/article/details/60764420

  3. Python中的xxx+=xxx和xxx=xxx+xxx一些区别及执行过程

    预知小知识: Python中的变量与其他语言稍有差异,如a = 10并不是直接在内存中创建一个变量a其值为10,而是在内存中创建一个a这个a指向这个10,在Python中所有牵扯到等号的均不是值赋值, ...

  4. C++ Primer 笔记——固有的不可移植的特性

    1.为了支持底层编程,C++定义了一些固有的不可移植的特性,所谓不可移植特性是指因机器而异的特性. 2.一个位域中含有一定数量的二进制位,位域在内存中的布局是机器相关的.位域的类型必须是整型或枚举类型 ...

  5. RabbitMQ在java中基础使用

    RabbitMQ相关术语:          1.Broker:简单来说就是消息队列服务器实体.          2.Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列.      ...

  6. C# 读取sqlite文件

    class Program { static void Main(string[] args) { getsqliteData(); } public static void getsqliteDat ...

  7. ubuntu 手动更新源 以及使用sudo update与upgrade的作用及区别

    一.今天更新一下我的ubuntu系统,用了几个源发现不怎么好用 上网查了一下发现有说阿里云的源挺好用 然后我试了一下 下载速度还挺快,下面分享一下怎么手动添加源列表 1.最好先做一下备份 sudo c ...

  8. Vuex详解笔记2

    关于 state 每个vuex 应用只有一个 store 实例,所以使用起来不会太复杂,对于定位错误状态和操作会很方便. 简单用法:在vuex 的计算属性中返回vuex 的状态 最基本的使用方式,通过 ...

  9. C# 会话,进程,线程,线程安全

    会话->进程->线程 b/s网站中,每个用户的访问为一次会话,会话中包含CPU为用户在内存中开辟空间存储的会话信息, 如Session,进程,会话拥有一个进程,同一进程下可以拥有多个线程. ...

  10. C 语言的 GCC 扩展

    GNU 编译器(GCC)提供了很多 C 语言扩展,编译器会使用该信息生成更高效的机器代码. 内联函数 static inline __attribute__ ((always_inline)) int ...