在WEB開發中,可重用的代碼我們可以把它寫成一個通用模組供需要的地方來引用。本文就是介紹在ASP.NET的web編程時,如何在使用者控制項中添加屬性,實現這種方法;舉例說明詳解。
在WEB開發中經常有一些代碼是在很多地方重複出現的,象導覽列、使用者登入/註冊和首頁上面的一些固定欄目等。這些可重用的代碼我們可以把它寫成一個通用模組供需要的地方來引用,這樣做即節省了開發時間還方便以後的維護。
在ASP.NET的web編程中提供了一種叫做“使用者控制項”可以協助我們完成這種做法,其副檔名是“.ascx”,由於ascx檔案是用來插入ASPX頁面中使用的,而一個ASPX表單只能包含一個<form>標誌,所以ascx使用者控制項不能包含<form></form>標誌。
下面使用一個經典入門範例來建立一個簡單的使用者控制項,檔案名稱為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的語句。
以上的示範代碼沒有給控制項添加屬性,下面我們舉一個使用者登入的檔案,把它寫成使用者控制項,在向其中添加UserName和PassWord這兩個屬性。向使用者控制項添加屬性很簡單,只要在ascx檔案中的<script></script>塊中定義就行了。
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.ascx檔案添加了UserName和PassWord這兩個屬性了,以下DEMO示範如何在ASPX頁面上引用這兩個屬性。
UserLogin.aspx <%@Register TagPrefix=”wen” TagName=”UserLoginContorl” src=” UserLogin.ascx” %> <html> <title>引用屬性</title> <body> <form runat=”server”> <wen: UserLogin.ascxID=”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> |