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

ASP.NET 2.0 使用者控制項跨控制項呼叫完整教學:@Reference 指示詞與 FindControl 實戰

     編輯:關於ASP.NET

在 ASP.NET 2.0 中,使用者控制項(.ascx)之間若需互相呼叫,必須在呼叫端加入 @Reference 指示詞宣告目標控制項虛擬路徑。

頁面佈局範例

<form id="form1" runat="server">
    <uc1:WebUserControl ID="WebUserControl1" runat="server" />
    <uc2:WebUserControl2 ID="WebUserControl2_1" runat="server" />
</form>

目標:點擊控制項 1 的按鈕,將文字顯示於控制項 2 的文字方塊中。

控制項 1 程式碼 (WebUserControl.ascx)

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
<%@ Reference VirtualPath="~/WebUserControl2.ascx" %>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />

控制項 1 後置程式碼

protected void Button1_Click(object sender, EventArgs e)
{
    WebUserControl2 w = Page.FindControl("WebUserControl2_1") as WebUserControl2;
    w.Text = "Hello all!";
}

控制項 2 程式碼 (WebUserControl2.ascx)

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl2.ascx.cs" Inherits="WebUserControl2" %>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

控制項 2 後置程式碼 - 暴露公開屬性

public partial class WebUserControl2 : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e) { }

    public string Text
    {
        set { TextBox1.Text = value; }
    }
}

關鍵點總結

  1. @Reference VirtualPath="..." 讓編譯器識別目標控制項型別
  2. Page.FindControl("ID") 取得控制項實例
  3. 目標控制項需暴露 public 屬性或方法供呼叫
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved