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操作系统安装 (15618篇文章)
- Windows权限设置 (10238篇文章)
- Windows操作系统安全集 (18679篇文章)
- Windows频道 (9812篇文章)
- 用vb.net实现闹钟提醒程序 (9次浏览)
- C#变得越来越臃肿是不可避免的? (7次浏览)
- .NET开发人员犯的6大安全错误 (6次浏览)
- C#与EXCEL的数据交互(一) (5次浏览)
- vb.net GDI+入门——画笔、画刷和颜色 (3次浏览)
- C# 3.0新特性之扩展方法 (1次浏览)
- VB.Net实现进程监视器的方法 (1次浏览)
- 请跟我来--使用Ext搞个原型 (1次浏览)
- ASP.NET 3.5 Extensions带来什么 (1次浏览)
- WPF的Attached属性 (0次浏览)



