我们的业务系统涉及到较多的表单编辑与校验,最简单的办法是使用asp.net自带的数据校验控件即可,但这样有以下3个问题:
1 校验控件要在设计时加入到表单上,并手工设置:数据类型,错误信息等属性,比较繁琐。
2 对于一个输入框,我们可能要检查多项,如:必填,必须是日期格式,并且要大于2007-1-1。这样就需要加入多个校验控件。
3 业务规则和表单绑定在一起,不利于维护和重用。
我们希望的校验功能是:
1 校验规则和表单脱离,表单上画好输入框即可,校验控件会在运行时,根据配置文件动态创建。
2 根据验证规则,生成默认的:不能为空,错误的数字类型,必须在1到100之间这样的提示信息。
3 灵活的验证规则表达式:如: range(1, 200) , >=0.5 , Mail(), Mobile()。目前不支
持 and, or 这样的条件,但容易扩展。
为此我们封装了这部分的功能,使用时只要:
在xml文件中设置好:控件名称,数据类型,是否必填,验证表达式信息。
<ValidateInfo>
<ControlName>排口数量</ControlName>
<DataType>Integer</DataType>
<Require>true</Require>
<Expression>range(1, 100)</Expression>
</ValidateInfo>
在page的Page_Init事件中,调用类方法:
ValidateHelper.LoadFromFile("数据校验_配置.xml") 即可。
类设计:
// 配置信息类
class ValidateInfo
{
public string ControlName;
public ValidationDataType DataType;
public string ErrorMessage;
public bool Require;
public string Expression;
}
// 校验控件创建工厂
public class ValidatorFactory
{
CreateRequiredFieldValidator();
CreateDateTypeCheckValidator();
CreateRangeValidator(string min, string max);
CreateCompareValidator(ValidationCompareOperator oper, string valueToCompare);
...
}
// 校验规则解析器,根据配置信息,创建校验控件
public class ValidatorParser
{
Parse(ValidateInfo info, ValidatorFactory factory);
...
}
// 读取配置信息,并绑定校验控件到表单
public class ValidateHelper
{
LoadFromFile(Page page, string fileName)
}
分享到:
相关推荐
在 ASP.NET 2.0 中创建 Web 应用程序主题 ASP.NET 2.0 中的数据访问 ASP.NET 2.0:弃用 DataGrid 吧,有新的网格控件了! 将 ASP.NET 2.0 应用程序服务配置为使用 SQL Server 2000 或 SQL Server 2005 ASP.NET 2.0 ...
1. MyExtenderAssembly:这是一个ASP.NET AJAX CONTROL TOOLKIT定制扩展器控件,使用于本书中的商城案例。其实,对应的.DLL文件已经复制到商城案例目录下,这里提供完整源码供参考之用。 2. RssKit:这是本书RSS阅读...
C#(VB.net)数据库访问操作类库 你知道,一些类库把常用的操作封装起来,以后可以直接调用,就节省了普通开发人员的大量精力....Asp.net 和Winform WPF都可以使用 类库还分X86 和ANY 两种平台,满足将来 64位操作系统需要!
c#Winform中的串口通信封装类,示例:(1)创建对象 SerialPortUtility sp= new SerialPortUtility();(2)打开串口 sp.OpenSerialPort("COM10"/*串口号*/, 115200/*波特率*/, 0/*校验位*/, 8/*数据位*/, 1/*停止位*...
(3)免费提供数据库访问,页面数据校验等等基础类库及封装类库源码。自己可以对其进行修改保存满足自己的需要。 (4)支持不同类型数据层的生成: 基于SQL语句,基于参数,基于存储过程。 (5)支持...
书中沿袭深受读者欢迎的step by step风格,通过丰富的练习引导读者逐步构建windows应用程序,访问sql server数据库,开发asp.net web应用程序,创建并使用web服务等。 全书共29章,结构清晰,叙述清楚。所有练习均...
readonly声明一个字段,该字段只能赋值为该声明的一部分或者在同一类的构造函数中。 sealed指定类不能被继承。 static声明属于类型本身而不是属于特定对象的成员。 unsafe声明不安全的上下文。 virtual在派生类中...
asp.net mvc微信开发框架和Web API开发框架 支持功能: 1,微信公共号开发 2,微信开放平台与微信公共号集成,线下pc端软件微信扫码登录接口集成 3,微信支付功能,微信公共号向个人转账提现功能 4,文件上传,下载...
‘------------------------------------- ‘天枫ASP class v1.0,集常用asp函数于一体 ‘天枫版权所有http://www.52515.net ‘QQ:76994859 EMAIL:Chenshaobo@gmail.com ...
而使用表现层框架则可以将Jsp中剩余的JavaBeans完全分离,这部分JavaBeans主要负责显示相关信息,一般是通过标签库(Taglib)实现,不同框架有不同自己的标签库,Struts是应用比较广泛的一种表现层框架。 2、 Ajax...
Winson.Framework 1.0简介: <br> Winson.Framework 1.0可以说是一个基于ASP.NET2.0技术小型应用框架,是本人从以 <br>往的开发经验和网上的一些好的代码收集整合而成的。 <br> 这里需要说明一下的就是,本...