這期內容當中小編將會給大家帶來有關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 實現通信了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創新互聯行業資訊頻道。
本文標題:ASP.NET中怎么利用UserControl實現通信-創新互聯
本文路徑:http://vcdvsql.cn/article42/cccjhc.html
成都網站建設公司_創新互聯,為您提供面包屑導航、微信公眾號、網站收錄、企業建站、動態網站、全網營銷推廣
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯