
仿照easy-ui并改进的表单验证
发布日期:2021-05-09 04:10:23
浏览次数:14
分类:博客文章
本文共 1791 字,大约阅读时间需要 5 分钟。
概述
easy-ui有自身的一套表单验证,扩展方便,但默认下也存在一些弱点,比如多规则验证、后台验证、远程异步验证等,这些功能要解决起来是比较吃力的。我仿照它的样式,写了一套前端表单验证的validBox.js脚本,支持多规则验证和远程异步验证,体积也比较小,再c#代码封装一下,项目为ValidBox4Mvc,能提供给Asp.net MVC使用,支持后台验证、实体使用特性描述验证规则等。
效果展示
使用方法
- 在Mvc的web工程引用ValidBox4Mvc.dll;
- 把ValidBox.js所在文件夹复制到web工程的Content或其它目录;
- 在View视图的Html页面引入ValidBox.js (jquery.js是前提);
- 生成表单,直接书写验证规则给html标签如下:
-
@Html.HiddenFor(item => item.Id)
@Html.TextBoxFor(item => item.Name, Html.Valid().Required("名称为必填项").Length(2, 4).Remote("/home/CheckName", "Id", "Name").AsHtmlAttribute())@Html.TextBoxFor(item => item.Email, Html.Valid().Required("邮箱为必填项").Email().MaxLength(15).AsHtmlAttribute(new { style = "color:#005580" }))也可以在Model写上规则特性,html标签获取字段对应的规则:
-
[Serializable] public class UserInfo { public int Id { get; set; } [Required(Message = "名称为必填项")] [Length(2, 4, Message = "名称为{0}到{1}个字")] [Remote("/home/CheckName", "Id", "Name")] public string Name { get; set; } [Required(Message = "邮箱为必填项")] [Email] [MaxLength(15)] public string Email { get; set; } }
@Html.HiddenFor(item => item.Id)
@Html.TextBoxFor(item => item.Name, Html.ValidFor(item => item.Name))@Html.TextBoxFor(item => item.Email, Html.ValidFor(item => item.Email, new { style = "color:#005580" })) - 表单提交前验证
function saveForm() { // 前台验证 通过后再提交表单 $('.block').validInput(function (r) { if (r == false) return; $.post("/home/save", $('.block').find("input").serialize(), function (data) { alert(data); }); });}
扩展
- ValidBox.js扩展:扩展jQuery.validRules空间下的方法即可;
- 特性添加:新建特性,派生于ValidRuleBase,关联对应ValidBox.js扩展的规则,并实现后台验证的IsValid方法;
- Html扩展:请仿照HtmlHeplerExtend.cs的扩展。
完整项目和例子
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月02日 08时52分21秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
100天搞定机器学习|Day22 机器为什么能学习?
2019-03-06
100天搞定机器学习|day37 无公式理解反向传播算法之精髓
2019-03-06
数据工程师必备的8项技能,不要只知道Python!
2019-03-06
R in action读书笔记(3)-第六章:基本图形
2019-03-06
R in action读书笔记(19)第十四章 主成分和因子分析
2019-03-06
CISC和RISC是什么?它们的特点和区别?
2019-03-06
iOS UIAlertController
2019-03-06
iOS UISlider的使用
2019-03-06
iOS Xcode 打包之后,不能输出日志
2019-03-06
UIPickerView的使用(二)
2019-03-06
iOS 多线程GCD简介
2019-03-06
实现延迟消息队列
2019-03-06
写了一下 micropython 的文件系统单元测试
2019-03-06
说说字库和字模的故事,然后在 MaixPy 里实现打印中文字体(任意字体)吧!
2019-03-06
线性代数应该这样学9:上三角矩阵、对角矩阵
2019-03-06
【科学计算】插值理论
2019-03-06
centos7一步一步搭建docker jenkins 及自定义访问路径重点讲解
2019-03-06
深度学习一:深度前馈网络和反向传播
2019-03-06
在wxPython使ListCtrl占据整个窗口
2019-03-06