Web Form使用者控制項

來源:互聯網
上載者:User
1。使用者控制項介紹

除了 ASP.NET 提供的內建伺服器控制項外,還可以使用已學會的編寫 Web Form頁的相同編程技巧輕鬆地定義自己的控制項。實際上,只需做少量的修改,幾乎任何 Web Form頁即可在其他頁中作為伺服器控制項重用(注意,使用者控制項是 System.Web.UI.UserControl 類型,該類型直接從 System.Web.UI.Control 繼承)。用作伺服器控制項的 Web Form頁簡稱為使用者控制項。作為約定,使用 .ascx 副檔名指示這樣的控制項。這樣可以確保使用者控制項的檔案不能作為獨立的 Web Form頁執行(您會略微發現在使用者控制項和 Web Form頁之間有很少但很重要的差異)。使用者控制項通過 Register 指令包括在 Web Form頁中。

<%@ Register TagPrefix="Acme" TagName="Message" Src="pagelet1.ascx" %>

TagPrefix 確定使用者控制項的唯一命名空間(以便多個同名的使用者控制項可以相互區分)。TagName 是使用者控制項的唯一名稱(可以選擇任何名稱)。Src 屬性是使用者控制項的虛擬路徑,例如“MyPagelet.ascx”或“/MyApp/Include/MyPagelet.ascx”。註冊了使用者控制項後,可以像放置普通的伺服器控制項那樣,將使用者控制項標記放置在 Web Form頁中(包括 runat="server" 屬性):
<Acme:Message runat="server"/>

2。公開使用者控制項屬性

當 Web Form頁被視為控制項時,該 Web Form的公用欄位和方法也被提升為此控制項的公用屬性(即標記屬性)和方法。

除了將公用欄位提升為控制項屬性外,還可以使用屬性文法。屬性文法具有能夠在設定或檢索屬性時執行代碼的優點。

3。在使用者控制項中封裝事件

使用者控制項參與請求的整個執行生存期,方式與普通的伺服器控制項類似。這意味著使用者控制項可以處理自己的事件,並封裝來自包含 Web Form頁的一些頁邏輯。注意,使用者控制項本身不具有封裝它的 <form runat="server"> 控制項。由於一頁上只能有一個表單控制項(ASP.NET 不允許嵌套的伺服器表單),因此需要包含 Web Form頁負責定義該控制項。

4。以編程方式建立使用者控制項

正如可以編程方式建立普通的伺服器控制項一樣,也可以這樣建立使用者控制項。頁的 LoadControl 方法用於載入使用者控制項,並傳遞使用者控制項源檔案的虛擬路徑:

Control c1 = LoadControl("pagelet7.ascx");
((Pagelet7CS)c1).Category = "business";
Page.Controls.Add(c1);

使用者控制項的類型由 Control 指令上的 ClassName 屬性決定。例如,以檔案名稱“pagelet7.ascx”儲存的使用者控制項被分配強型別“Pagelet7CS”,如下所示:

<%@ Control ClassName="Pagelet7CS" %>
由於 LoadControl 方法返回 System.Web.UI.Control 類型,因此必須將其轉換為適當的強型別以便設定控制項的各屬性。最後,使用者控制項被添加到基頁的 ControlCollection

重要說明 只有當為使用者控制項包括了 Register 指令時,使用者控制項的強型別才能由包含 Web Form頁使用(即使沒有實際聲明的使用者控制項標記)。

小結

  1. 使用者控制項使開發人員能夠使用編寫 Web Form頁的相同編程技巧輕鬆地定義自訂控制項。
  2. 作為約定,用 .ascx 副檔名指示這樣的控制項。這樣可以確保使用者控制項檔案不能作為獨立的 Web Form頁執行。
  3. 使用者控制項通過 Register 指令包括在另一 Web Form頁中,該指令指定 TagPrefixTagNameSrc location
  4. 註冊了使用者控制項後,可以像普通的伺服器控制項那樣將使用者控制項標記放置在 Web Form頁中(包括 runat="server" 屬性)。
  5. 在包含 Web Form頁中將使用者控制項的公用欄位、屬性和方法提升為該控制項的公用屬性(標記屬性)和方法。
  6. 使用者控制項參與每個請求的整個執行生存期,並且可以處理自己的事件,封裝來自包含 Web Form頁的一些頁邏輯。
  7. 使用者控制項不應包含任何表單控制項,而應依靠其包含 Web Form頁在必要時包括表單控制項。
  8. 可以使用 System.Web.UI.Page 類的 LoadControl 方法以編程方式建立使用者控制項。使用者控制項的類型由 ASP.NET 運行庫決定,遵循約定檔案名稱_副檔名
  9. 只有當為使用者控制項包括了 Register 指令時,使用者控制項的強型別才能由包含 Web Form頁使用(即使沒有實際聲明的使用者控制項標記)。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.