首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET 使用者控件開發與應用完整指南

     編輯:ASP.NET 基礎

使用者控件特性

  • 副檔名 .ascx,無 @Page 指令,改為 @Control。
  • 不可直接瀏覽,必須註冊後嵌入 .aspx 頁面。
  • 可包含 HTML 標記、Web 控件、程式碼後置、事件處理。
  • 支援公開屬性/方法,實現父頁面與控件雙向通訊。

建立搜尋控件範例

1. 標記

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="SearchBox.ascx.cs" Inherits="SearchBox" %>
<asp:TextBox ID="txtKeyword" runat="server" />
<asp:Button ID="btnSearch" runat="server" Text="搜尋" OnClick="btnSearch_Click" />

2. 程式碼後置

public partial class SearchBox : System.Web.UI.UserControl
{
    // 公開屬性:按鈕文字
    public string ButtonText
    {
        get => btnSearch.Text;
        set => btnSearch.Text = value;
    }

    // 公開事件:搜尋動作
    public event EventHandler SearchClicked;

    protected void btnSearch_Click(object sender, EventArgs e)
    {
        txtKeyword.Text = "搜尋完成:" + txtKeyword.Text;
        SearchClicked?.Invoke(this, new SearchEventArgs(txtKeyword.Text));
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack) btnSearch.Text = ButtonText;
    }
}

public class SearchEventArgs : EventArgs
{
    public string Keyword { get; }
    public SearchEventArgs(string keyword) => Keyword = keyword;
}

在 .aspx 頁面使用

1. 註冊指令

<%@ Register Src="~/Controls/SearchBox.ascx" TagPrefix="uc" TagName="SearchBox" %>

2. 拖曳或手寫標記

<uc:SearchBox ID="ucSearch1" runat="server" ButtonText="開始查詢" OnSearchClicked="ucSearch1_SearchClicked" />
<asp:Label ID="lblResult" runat="server" />

3. 父頁面處理事件

protected void ucSearch1_SearchClicked(object sender, SearchEventArgs e)
{
    lblResult.Text = "父頁面收到關鍵字:" + e.Keyword;
}

進階技巧

  • 動態載入:var ctrl = LoadControl("~/Controls/SearchBox.ascx"); phContainer.Controls.Add(ctrl); 需在 Page_Init 執行以保持 ViewState。
  • 巢狀控件存取:var txt = ucSearch1.FindControl("txtKeyword") as TextBox;。
  • 樣式隔離:控件內部使用 CssClass,父頁面引用同名 CSS 即可統一風格。
  • 快取輸出:@Control OutputCache Duration="60" VaryByParam="none" 針對靜態化片段。

適用場景

  • 全站共用頁首/頁尾/導覽列/登入區塊。
  • 重複業務區塊:商品卡片、新聞列表項、分頁器、搜尋框。
  • 需在多個專案間共用的 UI 元件(編譯成 .dll 部署)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved