- 新建服务器控件,继承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");
- }