频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Windows Forms中实现统一的数据验证(一)

来源: 作者:Anders Cui 出处:巧巧读书 2008-01-23 进入讨论组
上一页 1 2 3 4 5 下一页 

BaseValidator:分而治之

实现了RequiredFieldValidator后,其它类型的验证组件应当比较容易实现了。先别急,可没你想的那么简单。
RequiredFieldValidator类把特定的”必填”逻辑和其它对每个验证组件都适用的通用逻辑耦合在一起了。这种情况下,应当把RequiredFieldValidator分解为两个类型:BaseValidator和减肥后的RequiredFieldValidator。
abstract class BaseValidator : Component ...{ void Validate() ...{ _isValid = EvaluateIsValid(); } protected abstract bool EvaluateIsValid(); }

这样定义的效果是,BaseValidator必须通过继承后才能使用,而EvaluateIsValid则必须实现。Validate方法通过EvaluateIsValid方法来设置IsValid。这种技术也应用在了ASP.NET的验证控件上。

BaseValidator实现后,需要对RequiredFieldValidator进行重构:

[ToolboxBitmap(typeof(RequiredFieldValidator), "RequiredFieldValidator.ico")] class RequiredFieldValidator : BaseValidator ...{ string InitialValue ...{} protected override bool EvaluateIsValid() ...{ string controlValue = ControlToValidate.Text.Trim(); string initialValue; if( _initialValue == null ) initialValue = ""; else initialValue = _initialValue.Trim(); return (controlValue != initialValue); } }
更进一步,实现其它验证组件 

通过使用基类和派生类将通用逻辑和特定逻辑分离后,我们可以把注意力集中在特定的验证逻辑,这在RequiredFieldValidator中效果不错。下面会看到,对于其它类型的验证组件同样很好,它们是:

  • <!--[if !supportLists]-->RegularExpressionValidator
  • CustomValidator
  • CompareValidator
  • RangeValidator

现在把它们一一实现。

文章地址: http://www.qqread.com/dotnet/j394032.html 更多文章 更多内容请看Windows操作系统安装Windows权限设置Windows操作系统安全集专题,或进入讨论组讨论。
上一页 1 2 3 4 5 下一页 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章