中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET中怎么利用UserControl 實現通信

發布時間:2021-07-16 14:01:06 來源:億速云 閱讀:166 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關ASP.NET中怎么利用UserControl 實現通信,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

UserControl是用戶自定義控件,我們可以在UserControl中注入事件,當一個UserControl觸發某種事件,然后通過事件參數來傳遞數據,讓其他UserControl獲得這個事件傳遞過來的參數,實現通信。

下面簡單演示一下兩個UserControl進行通信

創建好一個類,兩個UserControl和一個web頁面。

這里分別是MyEventAgrs.cs,UCProvider.ascx,UCComsumer.ascx,Default.aspx。

MyEventAgrs.cs代碼如下:

復制代碼 代碼如下:


public delegate void MyEventHandle(object sender, MyEventAgrs args);
    public class MyEventAgrs : EventArgs
    {
        public MyEventAgrs() { }
        public string MyMsg { get; set; }
    }

public delegate void MyEventHandle(object sender, MyEventAgrs args);
    public class MyEventAgrs : EventArgs
    {
        public MyEventAgrs() { }
        public string MyMsg { get; set; }
    }

如果想傳遞其他對象時就只需要修改MyEventAgrs類的MyMsg方法。這里須繼承EventArgs抽象類,用于存放事件參數值,另外需定義一個委托事件,然后在其他的地方使用。

 UCProvider.ascx代碼如下:

復制代碼 代碼如下:


 public partial class UCProvider : System.Web.UI.UserControl
    {
        public event MyEventHandle myHandle;
        protected void Page_Load(object sender, EventArgs e)
        {
            this.DropDownList1.SelectedIndexChanged += new EventHandler(DropDownList1_SelectedIndexChanged);
        }
        void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            MyEventAgrs myEvent = new MyEventAgrs();
            myEvent.MyMsg = DropDownList1.SelectedValue;
            myHandle(this, myEvent);
        }    }

public partial class UCProvider : System.Web.UI.UserControl
    {
        public event MyEventHandle myHandle;
        protected void Page_Load(object sender, EventArgs e)
        {
            this.DropDownList1.SelectedIndexChanged += new EventHandler(DropDownList1_SelectedIndexChanged);
        }
        void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            MyEventAgrs myEvent = new MyEventAgrs();
            myEvent.MyMsg = DropDownList1.SelectedValue;
            myHandle(this, myEvent);
        }    }

這里在前臺頁面中定義了一個DropDownList,并給DropDownList綁定了數據源,不再羅列前臺頁面。我想實現當用戶選擇DropDownList的時候將用戶選擇的DropDownList的值傳遞出去,代碼里面用myHandle(this, myEvent)來初始化事件。

UCComsumer.ascx代碼如下:

復制代碼 代碼如下:


 public partial class UCComsumer : System.Web.UI.UserControl
    {
public void InitValue(string msg) {
            lb.Text = msg;
        }
}

public partial class UCComsumer : System.Web.UI.UserControl
    {
public void InitValue(string msg) {
            lb.Text = msg;
        }
}

這里賦值的時候也可以用屬性來表示,比如:

復制代碼 代碼如下:


  public string UC1Msg
        {
            get{return this.lb.Text;}
            set{this.lb.Text=value;}
        }

public string UC1Msg
        {
            get{return this.lb.Text;}
            set{this.lb.Text=value;}
        }

如果用這種方式,在引用UserControl的時候就更加方便了:

復制代碼 代碼如下:


<uc2:ucConsumer runat="server" ID="uc2" UC1Msg="Defalut Value" />

<uc2:ucConsumer runat="server" ID="uc2" UC1Msg="Defalut Value" />

Default.aspx代碼如下:

前臺頁面里面需要注冊UserControl

復制代碼 代碼如下:


<%@ Register TagPrefix="uc1" TagName="ucProvider" Src="~/UserControls/UCProvider.ascx" %>
<%@ Register TagPrefix="uc2" TagName="ucConsumer" Src="~/UserControls/UCComsumer.ascx" %>

<%@ Register TagPrefix="uc1" TagName="ucProvider" Src="~/UserControls/UCProvider.ascx" %>
<%@ Register TagPrefix="uc2" TagName="ucConsumer" Src="~/UserControls/UCComsumer.ascx" %>

再引用

復制代碼 代碼如下:


<uc1:ucProvider runat="server" ID="uc1" OnmyHandle="uc1_myHandle" />
<uc2:ucConsumer runat="server" ID="uc2" />

<uc1:ucProvider runat="server" ID="uc1" OnmyHandle="uc1_myHandle" />
<uc2:ucConsumer runat="server" ID="uc2" />

后臺頁面:

復制代碼 代碼如下:


protected void uc1_myHandle(object sender, MyEventAgrs args)
        {
            if (args != null)
            {
                uc2.InitValue(args.MyMsg);
            }
            else
                uc2.UC1Msg = string.Empty;
        }

protected void uc1_myHandle(object sender, MyEventAgrs args)
        {
            if (args != null)
            {
                uc2.InitValue(args.MyMsg);
            }
            else
                uc2.UC1Msg = string.Empty;
        }

這樣就完成了整個過程。Default.aspx頁面僅僅是一個載體或者是中間介質,所有的操作都是在兩個UserControl之間進行。但是當頁面第一次加載的時候,也就是頁面加載好過分下拉框沒有被點擊之前,這里是沒有值傳遞的。

上述就是小編為大家分享的ASP.NET中怎么利用UserControl 實現通信了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

颍上县| 成安县| 广元市| 丰镇市| 句容市| 南康市| 柳河县| 大理市| 乐昌市| 上林县| 阿克陶县| 濮阳县| 城步| 玉山县| 鄂托克前旗| 镇坪县| 邯郸市| 阿城市| 仙游县| 高尔夫| 盐津县| 怀远县| 科技| 寻乌县| 开阳县| 嘉兴市| 泽库县| 正蓝旗| 柘荣县| 久治县| 清远市| 炉霍县| 江口县| 延津县| 韶关市| 屏南县| 云林县| 西丰县| 兴文县| 金阳县| 亳州市|