快速业务通道

创建具有自验证功能的textbox控件

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-12
0}’ cannot be blank.",
this.FriendlyName);
this.IsValid = false;
}
}
}拓展我们的创意
现在我们已经创建了一个内建基本验证功能的textbox控件,现在我们可以延展我们的想法,创建更多的有趣的具有特定验证功能的textbox控件
下面以创建一个只允许输入整型数据的textbox控件(IntegerTextBox),并且使该控件具有只允许输入的数据必须在一定的范围内,但我们仍然需要考虑是否允许空值,所以,象上面一样,需要添加一个属性
在上面我们创建的基本的textbox控件的基础上,我们仅仅需要继承该控件,然后覆盖Validate函数和添加一些新的属性
private int _minvalue = Int32.Minvalue;
private int _maxvalue = Int32.Maxvalue;

public int Minvalue {
get { return _minvalue; }
set {
_minvalue = value;

if (_minvalue > _maxvalue) {
int swap = _minvalue;
_minvalue = _maxvalue;
_maxvalue = swap;
}
}
}

public int Maxvalue {
get { return _maxvalue; }
set {
_maxvalue = value;

if (_minvalue > _maxvalue) {
int swap = _minvalue;
_minvalue = _maxvalue;
_maxvalue = swap;
}
}
}然后,我们扩充该Validate函数,并把编译它为本地代码
public override void Validate() {
this.IsValid = true;

bool isBlank = (this.Text.Trim() == "");

if (isBlank) {
if (!AllowBlank) {
this.ErrorMessage = String.Format("’{0}’ " +
"cannot be blank.", this.FriendlyName);
this.IsValid = false;
}
} else {
try {
_value = Int32.Parse(this.Text);
if (_value < this.Minvalue) {
this.ErrorMessage = String.Format("’{0}’ cannot " +
"be less than {1}",
this.FriendlyName, this.Minvalue);
this.IsValid = false;
}

if (_value > this.Maxvalue) {
this.ErrorMessage = String.Format("’{0}’ " +
"cannot be more than {1}",
this.FriendlyName, this.Minvalue);
this.IsValid = false;
}
} catch {
this.ErrorMessage = String.Format("’{0}’ " +
"is not a valid integer.", this.FriendlyName);
this.IsValid = false;
}
}
}

public int value {
get { return _value; }
set {
_value = value;
this.Text = _value.ToString();
}
}结论
要写就那么多了,现在我们还可以在这个类的基础上创建诸如要求只能输入符合一定时间格式和货币格式,下面我们举一个例子以说明如何使用我们创建的控件
在此以前我们要实现同样的功能需要写以下的代码:

ControlToValidate="Number"
Text="’Number’ cannot be blank." runat="server"/>
Minimumvalue="0" Maximumvalue="100"
Type="Integer" Text="The value must be from 0 to 100!"
runat="server"/>
而现在,我们仅仅需一句:
MyControls:IntegerText id="Number"
FriendlyName="Number" Minvalue="0" Maxvalue="100"
AllowBlank="false" runat="server">最后,需要说明的是,我创建的这个类相对与现有的验证来说并不那么完美,一个明显需要改进地方是,我们需要在该类中添加客户端脚本,以使验证行为可以不只在服务器端触发,也可以在客户端触发
我希望每一个人都能理解它的运行原理,以便你有更好的创意的时候可以修正它,也许有一天我可能会使用你创建的具有完美功能的类集。
关键词:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号