解析ASP.NET用戶控件說明和添加事件_.Net教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:淺析C#編程實現動態生成Word文檔
      如何用C#編程實現動態生成Word文檔并填充數據的效果呢?要使用C#操作word,首先要添加引用: 1、添加引用-COM-Microsoft Word 11.0 Object Library 2、在.cs文件中添加 using Word; 下面的例子中包括C#對Word文檔的創建、插入表格、設置樣式等操作: (例子

      在WEB開發中經常有一些代碼是在很多地方重復出現的,象導航欄、用戶登錄/注冊和首頁上面的一些固定欄目等。這些可重用的代碼我們可以把它寫成一個通用模塊供需要的地方來引用,這樣做即節省了開發時間還方便以后的維護。

      在ASP.NET的web編程中提供了一種叫做“用戶控件”可以幫助我們完成這種做法,其文件擴展名是“.ascx”,由于ascx文件是用來插入ASPX頁面中使用的,而一個ASPX窗體只能包含一個<form>標志,所以ascx用戶控件不能包含<form></form>標志。
       
      1、下面使用一個經典入門范例來創建一個簡單的用戶控件:

      Hello.ascx
       <html>
          <body>
            <h1>經典入門范例</h1><hr>
            <h3>Hello Word</h3>
          </body>
        </html>
       
      把這段代碼保存為Hello.ascx文件,然后在ASPX頁面上調用,具體調用如下:

      Hello.aspx 
      <%@Register TagPrefix=”wen” TagName=”Hello” src=”Hello.ascx”%>
      <html>
      <body>
       <form id=frm runat=server>
         <wen:Hello ID=MyHello runat=server>
       </form>
      </body>
      </html>

      在IE瀏覽器的地址里輸入 http://localhost/Hello.aspx運行,將在頁面上打印出字符串“Hello word”。

      代碼說明:1)指令@Register定義了用戶控件文件的標簽名“Hello”和標簽前綴名”wen;”

                          2)src屬性是連接到用戶控件的相關的文件名;
                         
               3)<wen:Hello ID=MyHello runat=server>這一句是在ASPX窗體中調用用戶控件Hello.ascx的語句。
       
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
      2、以下的演示代碼給控件添加屬性

      下面我們舉一個用戶登錄的文件,把它寫成用戶控件,在向其中添加UserName和PassWord這兩個屬性。

      向用戶控件添加屬性很簡單,只要在ascx文件中的<script></script>塊中定義就行了。 至此,我們已經給UserLogin.ascx文件添加了UserName和PassWord這兩個屬性了,以下DEMO演示如何在ASPX頁面上引用這兩個屬性。

      UserLogin.ascx 
      <html>
      <title>用戶登錄</title>
      <body>
       <table>
          <tr>
            <td>用戶名:</td>
            <td><asp:TextBox ID=”txt1” runat=”server”></td>
          </tr>
      <tr>
       <td>密  碼:</td>
       <td><asp:TextBox ID=”txt2” TextMode=”password” runat=”server”></td>
      </tr>
      <hr>
      <tr>
       <td></td>
       <td><asp:LinkButton Text=”登陸” runat=”server”></td>
      </tr>
      </table>
      </body>
      </html>
      <script language=”C#” runat=”server”>
       public string UserName{
         get{return txt1.Text;}
         set{txt1.Text=value;}
      }
       public string PassWord{
         get{return txt2.Text;}
         set{txt2.Text=value;}
      }
      </script>


      UserLogin.aspx
      <%@Register TagPrefix=”wen” TagName=”UserLogin” src=” UserLogin.ascx” %>
      <html>
      <title>引用屬性</title>
      <body>
       <form runat=”server”>
          <wen: UserLogin ID=”MyLogin” runat=”server”>
       </form>
        用戶名:<asp:Label ID=”Lab1” runat=”server”/><br>
        密  碼:<asp:Label ID=”Lab2” runat=”server”/><br>
      </body>
      </html>
      <script language=”C#” runat=”server”>
      void Page_Load(Object sender,EventArgs e){
       if(IsPostBack){
          Lab1.Text=MyLogin.UserName;
          Lab2.Text=MyLogin.PassWord;
      }
      }
      </script>


       
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
      3、以下的演示代碼給控件添加事件

      在上面我們定義了一個用戶登錄的用戶控件UserLogin.ascx 文件,里面包含了一個LinkButton服務器按鈕控件,當用戶單擊該按鈕時服務器端會自動生成一個回發來激發Page.Load事件。除了服務器自動產生回發來激發Page.Load事件外,我們可以給LinkButton添加一個它自己的事件,添加事件其實也很簡單,通過在<script></script>塊中聲明事件,然后把該事件添加到用戶控件中。
      我們現在通過以下的例子來說明如何在UserLogin.ascx用戶控件中添加事件。   UserLogin.ascx 
      <html>
      <title>用戶登錄</title>
      <body>
       <table>
          <tr>
            <td>用戶名:</td>
            <td><asp:TextBox ID=”txt1” runat=”server”></td>
          </tr>
      <tr>
       <td>密  碼:</td>
       <td><asp:TextBox ID=”txt2” TextMode=”password” runat=”server”></td>
      </tr>
      <hr>
      <tr>
       <td></td>
       <td><asp:LinkButton Text=”登陸” OnClick=”MyOnClick” runat=”server”></td>
      </tr>
      </table>
      </body>
      </html>
      <script language=”C#” runat=”server”>
       public string UserName{
         get{return txt1.Text;}
         set{txt1.Text=value;}
      }
       public string PassWord{
         get{return txt2.Text;}
         set{txt2.Text=value;}
      }
      public event Eventhandler Login; //添加事件句柄
                void MyOnClick(Object Sender,EventArgs e){
                   if(Login != null)
                      Login(this,new EventArgs()); //激活Login事件
              }
          </script>
      在ASPX頁面中使用自定義事件:

      <%@Register TagPrefix=”wen” TagName=”UserEvent” src=” UserLogin.ascx”%> 
      <html>
      <body>
       <form runat=server>
         <wen:UserEvent ID=”MyLogin” OnLogin=”OnLoginPress” runat=”server”>
       </form>
       <asp:Label ID=”Lab1” runat=”server”/><br>
       <asp:Label ID=”Lab2” runat=”server”/><br>
      </body>
      </html>
      <script Language=”C#” runat=”server”>
      void OnLoginPress(Object Render, EventArgs e){
       Lab1.Text=MyLogin.UserName;
       Lab2.Text=MyLogin.PassWord;
      }
      </script>

      說明:這里的OnLogin事件是我們給用戶控件UserLogin.ascx文件添加的事件。

       

      分享:淺析Asp.net2.0之自定義控件ImageButton
      前言 上個星期三開始學自定義控件,做了不少練習。花了一上午時間寫了一個imageButton,以前就像寫這個控件,只是不會。 圖片 正文 這個控件模仿winform中的button,可以支持圖片和文字。可以選擇執行服務器端程序還是客戶端程序,還有一些簡單的設置。 不足

      來源:模板無憂//所屬分類:.Net教程/更新時間:2009-10-30
      相關.Net教程