我们的业务系统涉及到较多的表单编辑与校验最简单的办法是使用aspnet自带的数据校验控件即可但这样有以下个问题
校验控件要在设计时加入到表单上并手工设置数据类型错误信息等属性比较繁琐
对于一个输入框我们可能要检查多项如必填必须是日期格式并且要大于这样就需要加入多个校验控件
业务规则和表单绑定在一起不利于维护和重用
我们希望的校验功能是
校验规则和表单脱离表单上画好输入框即可校验控件会在运行时根据配置文件动态创建
根据验证规则生成默认的不能为空错误的数字类型必须在到之间这样的提示信息
灵活的验证规则表达式如: range( ) >= Mail() Mobile()目前不支
持 and or 这样的条件但容易扩展
为此我们封装了这部分的功能使用时只要
在xml文件中设置好控件名称数据类型是否必填验证表达式信息
以下是引用片段
<ValidateInfo>
<ControlName>排口数量</ControlName>
<DataType>Integer</DataType>
<Require>true</Require>
<Expression>range( )</Expression>
</ValidateInfo>
在page的Page_Init事件中调用类方法
ValidateHelperLoadFromFile(数据校验_配置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)
}