asp.net服务器控件的开发步骤
新建服务器控件,继承TextBox控件
添加JS文件,实现验证方法
functionValidateText(valType,text) {
if (valType == "Number") {
//如果是数字
var reg = /^\d+$/;//定义正则表达式,只能输入数字
if(!reg.test(text.value)) {
alert("你输入的不是数字!");
text.value = "";
}
} elseif (valType == "BigChar") {
//如果是大写字母
var reg = /^[A-Z]+$/;
if(!reg.test(text.value)) {
alert("你输入的不是大写字母!");
text.value = "";
}
} elseif (varType == "SmallChar") {
//如果是大写字母
var reg = /^[a-z]+$/;
if(!reg.test(text.value)) {
alert("你输入的不是小写字母!");
text.value = "";
}
} elseif (varType == "Char") {
//如果是大写字母
var reg = /^[a-zA-Z]+$/;
if(!reg.test(text.value)) {
alert("你输入的不是字母!");
text.value = "";
}
}
3. 右键JS文件 ,将属性的“生成操作”改为“嵌入的资源”
给控件添加验证属性
定义枚举:
publicenumValidateType
{
Number,//数字
BigChar,
SmallChar,
Char
}
添加枚举
privateValidateType validateType;
[Bindable(true)]
[Category("自定义")]
[Localizable(true)]
[Description("验证类型 Number:数字 BigChar:大写字母 SmallChar:小写字母 Char:字母")]
publicValidateType ValidateType
{
get { return validateType; }
set { validateType = value; }
}
注册资源文件
//注册资源文件 参数1:资源文件的路径 格式为:MyControls.JS.Validate.js 参数2:类型
[assembly: WebResource("MyControls.JS.Validate.js", "text/javascript")]
namespace MyControls
在控件的预呈现事件里引用JS的资源文件
//预呈现事件
protectedoverridevoid OnPreRender(EventArgs e)
{
base.OnPreRender(e);
//引用资源文件
Page.ClientScript.RegisterClientScriptResource(this.GetType(), "MyControls.JS.Validate.js");
}
在呈现页面时给控件添加属性
//在呈现页面时给控件添加属性
protectedoverridevoidAddAttributesToRender(HtmlTextWriter writer)
{
base.AddAttributesToRender(writer);
writer.AddAttribute(HtmlTextWriterAttribute.Onchange, "ValidateText(‘"+ValidateType+"‘,this)");
}
给控制添加呈现内容
protectedoverridevoid Render(HtmlTextWriter writer)
{
base.Render(writer);
if (validateType == ValidateType.Number)
{
writer.Write("请输入数字!");
}
elseif (validateType == ValidateType.BigChar)
{
writer.Write("请输入大写字母!");
}
elseif (validateType == ValidateType.SmallChar)
{
writer.Write("请输入小写字母!");
}
else
{
writer.Write("请输入字母!");
}
}
添加CSS样式
//预呈现事件
protectedoverridevoid OnPreRender(EventArgs e)
{
base.OnPreRender(e);
//引用资源文件
Page.ClientScript.RegisterClientScriptResource(this.GetType(), "MyControls.JS.Validate.js");
HtmlLink link = newHtmlLink();
//如果页面已经存在此css文件,则不需要注册,否则注册
if (link.FindControl("validateId") == null)
{
link.Href =Page.ClientScript.GetWebResourceUrl(this.GetType(), "MyControls.CSS.Validate.css");
link.Attributes.Add("rel", "stylesheet");
link.Attributes.Add("type", "text/css");
link.ID = "validateId";
Page.Header.Controls.Add(link);//将CSS样式添加到头部
}
}
//在呈现页面时给控件添加属性
protectedoverridevoidAddAttributesToRender(HtmlTextWriter writer)
{
base.AddAttributesToRender(writer);
writer.AddAttribute(HtmlTextWriterAttribute.Onchange, "ValidateText(‘"+ValidateType+"‘,this)");
writer.AddAttribute(HtmlTextWriterAttribute.Class,"text");
}
本文出自 “Mr.Zhang” 博客,请务必保留此出处http://zhangzhipeng.blog.51cto.com/9115459/1575157
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。