程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> ASP.NET用戶控件說明和添加事件

ASP.NET用戶控件說明和添加事件

編輯:.NET實例教程


在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事件 
        } 
&
nbsp;   </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文件添加的事件。

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.Net/durongjian/archive/2009/01/10/3746095.ASPx

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved