自定义控件(一)

时间:2022-08-29 23:57:46

定义控件


          编写自己的服务器控件从而来补充常用控件的不足或封装自己在开发中常用
          功能、外观的控件
            创建自定义控件
          方法一:
            新建ASP.NET文件夹 APP_Code 来放置自己编写的控件类                  
            新建类(*.cs) 一般将类设置为public 并指定命名空间
            该类继承 System.Web.UI.WebControls 或其子类(TextBox,GridView),继承
            子类来扩展常用控件的不足(要引入System.Web.UI.WebControls命名空间)
            方法二:
            新建项目,项目类型为 Web,然后选中ASP.NET服务器控件,再填写项目名就ok啦
            在新建的ASP.NET服务器控件项目中会自动新建一个类,该类默认引入
            System.Web.UI.WebControls, System.Web.UI;命名空间
            [最终编译成程序集 *.dll 安全性提高,复用性提高]
            studio自动创建的类初始状态如下:
                //指定组件默认属性
              [DefaultProperty("Text")]
              //从Studio工具箱中拖动自定义控件自动生成的默认标记
              [ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")]
              public class WebCustomControl1 : WebControl
              {
                //指定成员是否常用于绑定
                [Bindable(true)]
                //在studio 属性面板上显示的位置(默认是外观)
                [Category("Appearance")]
                //指定属性的默认值
                [DefaultValue("")]
                //指定属性是否应本地化
                [Localizable(true)]
                public string Text
                {
                    get
                    {
                        String s = (String)ViewState["Text"];
                        return ((s == null) ? String.Empty : s);
                    }
                      set
                    {
                        ViewState["Text"] = value;
                    }
                }
                  protected override void RenderContents(HtmlTextWriter output)
                {
                    output.Write(Text);
                }
              }
                         使用自定义控件             如果自定义控件是在ASP.NET文件夹下要在某个 ASP.NET页中使用
            方法一:
              在aspx代码页中写入
              <% Register Namespace="MyControls" TagPrefix="my">
                然后就可以在代码页上写标签前缀为 my的ASP.NET控件了
              Register:向页面注册相应的类
                Namespace 指定控件所在的命名空间
                TagPrefix 指定前缀

            方法二:
              在Web.config中进行配置
              在Web.config <pages></pages>配字节下找到<add />配字节
              在<add />配字节下就可以指定 namespace,tagprefix
              指定后在aspx页面就能使用相关前缀了而且无需用 Register
              如果是在ASP.NET服务器控件项目中
            方法一:
              首先要在开发的项目中添加对ASP.NET控件项目的引用
              <@ Register Assembly="" NameSpace="" TagPrefix="">
                要说明的是在studio 中一个项目最终被编译为一个程序集,                 一般是该 项目的名字.dll                 要引用这个dll的话就必须指定 Assembly
              指定自定义控件所在的程序集 、命名空间、前缀

            方法二:
              在Web.config中配置,同前面
              在Web.config中配置更为实用(方便重用)
            而且建议在ASP.NET项目中编写自己的控件,这样就可以再Studio的工具栏
            中看到以项目命名的工具列表
            自定义控件会在客户端留下<span><span/>足迹               一个类一担继承了System.Web.UI.Controls.WebControl就是一个自定义控件