asp.net服务器控件的开发步骤

  1. 新建服务器控件,继承TextBox控件

  2. 添加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 = "";

        }

    }

  1. 3.      右键JS文件 ,将属性的生成操作改为嵌入的资源

  2. 给控件添加验证属性

  3. 定义枚举:

publicenumValidateType

    {

        Number,//数字

        BigChar,

        SmallChar,

        Char

    }

  1. 添加枚举

privateValidateType validateType;

 

        [Bindable(true)]

        [Category("自定义")]

        [Localizable(true)]

        [Description("验证类型 Number:数字 BigChar:大写字母 SmallChar:小写字母 Char:字母")]

        publicValidateType ValidateType

        {

            get { return validateType; }

            set { validateType = value; }

 }

 

  1. 注册资源文件

//注册资源文件 参数1:资源文件的路径 格式为:MyControls.JS.Validate.js 参数2:类型

[assembly: WebResource("MyControls.JS.Validate.js", "text/javascript")]

namespace MyControls

 

  1. 在控件的预呈现事件里引用JS的资源文件

//预呈现事件

        protectedoverridevoid OnPreRender(EventArgs e)

        {

            base.OnPreRender(e);

            //引用资源文件

           Page.ClientScript.RegisterClientScriptResource(this.GetType(), "MyControls.JS.Validate.js");

        }

  1. 在呈现页面时给控件添加属性

//在呈现页面时给控件添加属性

        protectedoverridevoidAddAttributesToRender(HtmlTextWriter writer)

        {

            base.AddAttributesToRender(writer);

            writer.AddAttribute(HtmlTextWriterAttribute.Onchange, "ValidateText(‘"+ValidateType+"‘,this)");

        }

  1. 给控制添加呈现内容

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("请输入字母!");

            }


}

  1. 添加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样式添加到头部

            }

  1.         }

  //在呈现页面时给控件添加属性

        protectedoverridevoidAddAttributesToRender(HtmlTextWriter writer)

        {

            base.AddAttributesToRender(writer);

            writer.AddAttribute(HtmlTextWriterAttribute.Onchange, "ValidateText(‘"+ValidateType+"‘,this)");

            writer.AddAttribute(HtmlTextWriterAttribute.Class,"text");

  1.         }

        


本文出自 “Mr.Zhang” 博客,请务必保留此出处http://zhangzhipeng.blog.51cto.com/9115459/1575157

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。