webpages(razor) 开发-表单验证

在用razor之前,表单验证对我来说,一直是个麻烦事,需要

1、在后台代码里对提交后的数据进行一次验证

2、在前端用js方式在对提交前的数据进行一次验证

这两步验证都需要定义验证规则。

用了razor之后,这两步验证可以合一了。看个简单的用户登录的demo

第一步 设定验证规则

1   string accountMsg = "6-12位英文字母及数字";
2     Validation.Add("account", Validator.Required(accountMsg), Validator.StringLength(12, 6, accountMsg),
3         Validator.Regex(Library.Validate.RegexAccount(6, 12), accountMsg));
4
5     Validation.Add("password", Validator.Required("密码为6-12位英文字母及数字"),
6         Validator.StringLength(12, 6, "密码为6-12位英文字母及数字"));

第二步 前端验证调用,这样就可以在数据提交前对数据进行验证

<input class="inputbox" type="text" maxlength="12" placeholder="用户名" name="account" value="@Request["account"]" @Validation.For("account") />

<input class="inputbox" type="password" maxlength="12" placeholder="密码" name="password" @Validation.For("password") />

--错误输出
@Html.ValidationMessage("account")
@Html.ValidationMessage("password")

第三步 后台验证调用,数据提交后对数据验证

if (IsPost && Validation.IsValid())

{

  //....

}

该验证是基于jquery.validate的,razor对此进行了扩展,

所以需要用此功能的话,需要引用

1、jquery.js

2、jquery.validate.min.js

3、jquery.validate.unobtrusive.min.js

这三个文件在新建razor网站时,vs会自带,jquery.js会有具体版本号的区别。

上面的demo在登录这种简单的场景下,优势并不明显,在有需要大量信息输入的表单场景下,优势就体现出来了。

上面只是简单的演示,在实际使用过程中会出现各种复杂的验证场景

比如一个页面内多个form表单

这个只需要注意Post后的后台验证方式即可,将Validation.IsValid() 修改成验证具体的字段 如Validation.IsValid("account","password")

比如组合输入验证

这个复杂一点,因为razor验证机制目前并没有组合验证的功能,需要在前后台自行扩展判断。

简单来说,就是在前端对需要组合验证的地方,使用jquery.validate的原始方式进行验证,如下图

然后在后台补充额外的判断。

比如远程验证

这个没有使用jquery.validate中带的remote功能,因为每次键盘输入都会触发,不想这样(可能因为我对jquery.validate不熟悉),

所以自己写了个js方法,在onblur时触发。

补充:

如果需要在后台代码中,输出验证错误信息用 ModelState.AddError("", "");

如果需要输出的错误信息有html代码,需要用到Html.Raw(Server.HtmlDecode(Html.ValidationMessage("account").ToString()))

在实际使用过程中也发现了好多坑,

如验证规则使用了Validator.StringLength方式后,该字段就成为必填项了。解决办法是用Validator.Regex + 正则表达式。

时间: 2024-10-25 20:07:16

webpages(razor) 开发-表单验证的相关文章

PHP开发之旅-表单验证

一.创建表单 <form name = "login" method = "post" action="contact.php?action=login" class="bootstrap-frm"> <h1>联系我们</h1> <label> <span>微信* :</span> <input id="wechat" type=

AngularJs 表单验证

看到一些博客说这个框架要过时了,但是还是学习了下,觉的很方便的一个框架,有空的同学可以看看,适合我们入门看,比较基础. 对于日常的开发来说,最常见的开发场景就是通过表单编辑数据,这里涉及的问题就是验证问题. angularjs 内置已经支持了常见的验证方式,可以轻松实现表单验证. 1. 绑定 为了方便,我们在 $scope 上下文对象上创建一个 model 来表示我们编辑的内容. $scope.model = { id : 8, name: "alice", email: "

(七)JavaScript之[调试]与[前端表单验证]

12].调试为什么要去调试?1.在编写JavaScript时,如果没有调试工具将是一件很痛苦的事情.2.没有调试工具是很难去编写JavaScript程序的.3.编写的代码可能包含语法错误.逻辑错误,如果不借助调试工具,这些错误很难去发现4.帮助找到错误信息的位置 通常,在编写一个新的JavaScript代码过程中都会发生错误 代码调试:在程序代码中寻找错误 console.log()我用的chrome浏览器[控制台console等]进行调试,因为chrome的开发者工具是最好的前端调试工具deb

AngularJs 入门系列-2 表单验证

对于日常的开发来说,最常见的开发场景就是通过表单编辑数据,这里涉及的问题就是验证问题. angularjs 内置已经支持了常见的验证方式,可以轻松实现表单验证. 1. 绑定 为了方便,我们在 $scope 上下文对象上创建一个 model 来表示我们编辑的内容. $scope.model = { id : 8, name: "alice", email: "[email protected]" }; angularjs 的验证需要表单的配合,为了能够访问表单,我们需

群里分享的react的收藏一下!今日周末,改了个表单验证然后无所事事了!

今日周末,改了个表单验证然后无所事事了,然后把昨天群里分享的react的收藏一下尽管现在还在研究angular和nodeJs毕竟刚刚开始用有点不熟...没准以后会研究一下react毕竟看着下面这张图还是觉得有点欢乐的 现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,

四种表单验证方法的分析和比较

前言 任何可以交互的站点都有输入表单,只要有可能,就应该对用户输入的数据进行验证.无论服务器后端是什么样的系统,都不愿意把时间浪费在一些无效的信息上,必须对表单数据进行校验,若有不符合规定的表单输入,应及时返回并给出相应的提示信息.本文将列举四种不同原理的表单验证方法,并给出各方法在 PHP 服务器上的实现. 回页首 浏览器端验证 传统上,表单数据一般都通过浏览器端的 Javascript 验证.浏览器端的验证速度快,若有不符合要求的输入,响应信息快速的返回给用户.由于验证数据不需要提交给服务器

Angular表单验证

在使用 AngularJS 进行开发的时候,表单填写是一个很常见的需求,而表单验证又是比较让人头疼的部分,本文对此做一个总结. 在 Angular 的视图中使用的 form 已经不是 HTML 中的普通 form 了,而是一个被 Angular 封装过的指令.它可以完成普通 form 无法实现的功能,比如 form 嵌套,而且自带强大的验证功能. Angular 在对表单进行校验的时候会使用 ngModelController 上的属性,如果不设置 ng-model,则 Angular 无法知道

jQuery Validate 插件,表单验证功能

连接地址:http://www.w3cschool.cc/jquery/jquery-plugin-validate.html jQuery Validate jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个用来编写用户自定义方法的 API.所有的捆绑方法默认使用英语作为错误信息,且已翻译成其他 37 种语言. 该插件是由 Jör

jQuery学习之路(8)- 表单验证插件-Validation

▓▓▓▓▓▓ 大致介绍 jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个用来编写用户自定义方法的 API.所有的捆绑方法默认使用英语作为错误信息,且已翻译成其他 37 种语言.该插件是由 Jörn Zaefferer 编写和维护的,他是 jQuery 团队的一名成员,是 jQuery UI 团队的主要开发人员,是 QUnit 的维