風影ASP.NET基礎教學 6使用者控制項

來源:互聯網
上載者:User
文章目錄
  • 1
  • 2
  • 3
  • 4
  • 建立一個簡單的使用者控制項
  • 使用者控制項前端代碼
  • 事件代碼
  • 頁面引用代碼

在Web系統開發中,經常會有一些功能模組在很多的地方重複出現,例如新聞管理系統中的使用者登陸/註冊、推薦新聞、熱點新聞和頁面上的一些固定欄目等。為了提高代碼的重用性,減少系統的開發與維護成本,一般會把這些重用性,減少系統開發和維護的成本,一般會把這些重用的功能模組寫成單獨的通用模組,以供需要的地方引用。

在ASPNET中,要實現這樣的通用模組,可以將這些功能模組封裝成“使用者控制項”,然後再需要的頁面中引用這些“使用者控制項”,從而達到了“一次封裝,N次複用”的效果。本文將介紹ASPNET使用者控制項的相關知識,並重點講解使用者控制項的封裝方法與編程技巧。

使用者控制項詳解

ASPNET WEB控制項檔案(.ascx)與ASPNET WEB分頁檔(.aspx)相似。與WEB分頁檔一張,使用者控制項由含有頁面標籤的使用者介面檔案(.ascx),頁面指令檔JS和後台代碼CS檔案組成。

使用者控制項可以包含所有web內容,比如靜態HTML內容和ASP.NET控制項。同時它還接受和Page對象一樣的事件(Load和PreRender)並通過屬性暴露一組相同的ASPNET固有的對象 Application、Session、Request、Response。因此可以採用和ASPNET web頁面相似的方式來建立使用者控制項,然後向其中添加所需的標記和子控制項。

通常,使用者控制項和頁面存在著以下的區別

1

使用者控制項的副檔名為ascx,而頁面為aspx。其中使用者控制項是從System.Web.UI.UserControl類繼承而來的,而Web頁面則是從System.Web.UI.Page類繼承而來的。

儘管如此,他們卻有著許多相同相似的地方,System.Web.UI.UserControl 和 System.Web.UI.Page都是繼承自同一個 System.Web.UI.TemplateControl類。因此,System.Web.UI.TemplateControl類的屬性和方法,事件都是共有的.

2

使用者控制項沒有Page指令,而換成了@Control指令,該指令對配置以及其他屬性進行定義,後面將詳細闡述@Control指令

3

使用者控制項不能作為獨立檔案運行,你必須像處理其他任何控制項一樣,將它們添加到ASPNET WEB頁面運行

4

使用者控制項沒有<html> <head> <body> <form>。因此除了這些元素以外,可以在使用者控制項裡使用和頁面裡一樣的任何內容。

 

 @Control指令

@Control指令類似於@Page指令,但@Control指令時在建立ASP.NET使用者控制項時使用的。@Control指令允許定義使用者控制項要繼承的屬性,這些屬性值會在解析和編譯頁面的時候賦予使用者控制項。

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="ASPNETTeach4.WebUserControl1" %>

 

@Control指令可用屬性比@Page指令少,他的常用屬性有

AutoEnentWireup 指示控制項的事件是否自動匹配。如果事件自動匹配則設定為true
ClassName 用於指定需要在請求時進行動態編譯的控制項的類名。並且可以包括一個類的完整限定名。
CodeBehind 指定與該使用者控制項關聯的後置代碼檔案路徑
EnableTheming 是否使用主題。
EnableViewState 是否啟用狀態視圖
Inherits 後置代碼對應的處理的類名
Language 該使用者控制項使用的語言

 

 

建立簡單的使用者控制項

上面闡述了使用者控制項的概念和@Control指令,下面我們來看看如何建立一個使用者控制項以及如何在Web頁內使用使用者控制項。

 

建立一個簡單的使用者控制項

 

建立成功之後會出現三個檔案

 

你會發現和我們建立Web表單一樣。這裡就不在贅述。

 

我們來看後置代碼

除了繼承的基類變了以外基本和Web頁面一致。

 

我們在這個使用者控制項裡加一些內容。

 

使用者控制項前端代碼
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="ASPNETTeach4.WebUserControl1" %>
<table style="width: 100%;">
    <tr>
        <td>
            <asp:Calendar ID="Calendar1" runat="server" 
                BackColor="#FFFFCC"
                BorderColor="#0000cc"
                BorderStyle="Ridge"
                OnSelectionChanged="Calendar1_SelectionChanged"
                CellPadding="0"></asp:Calendar> </td> 
    </tr>
    <tr>
        <td>
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></td> 
    </tr>
     
</table>

 

事件代碼
protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
      Label1.Text = "你選擇的日期是:" + Calendar1.SelectedDate.ToLongDateString();
}

 

頁面引用代碼
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="ASPNETTeach4.WebForm1" %>
 
<%@ Register Src="~/WebUserControl1.ascx" TagPrefix="uc1" TagName="WebUserControl1" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <uc1:WebUserControl1 runat="server" id="WebUserControl1" />
    </div>
    </form>
</body>
</html>
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.