usercontrol互相傳值
話說兩個不相信任的政黨..要互相移交政權..要好好的傳地下去..是有點給它難..
話說兩個不相關的usercontrol要互相丟值接值..感覺起來也是不怎麼好用..
(這開場白好像有點鳥....)
google一下..可以發現有人提供一些方法..像interface這樣很正統的解決方法..不過.. 真的有點給它努力認真研究..
才可以給它懂(我就是這樣懂的....) 如果看不懂或是想偷懶..那有啥方法呢?..有低..session..application都可以解決..
那我寫這篇文章幹麼....當然還有其他方法啦..不過..也算小撇步.. 跟session..application的想法是一樣的..
直接看圖說故事ㄅ..
textbox.ascx..這一個usercontrol放一個textbox和一個button
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="textbox.ascx.cs" Inherits="usercontrol_textbox" %> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
textbox.ascx.cs
protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { HttpContext.Current.Items["textbox"] = TextBox1.Text; }
label.ascx..這一個usercontrol放一個label
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="label.ascx.cs" Inherits="usercontrol_label" %> <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
label.ascx.cs
protected void Page_Load(object sender, EventArgs e) { } void Page_PreRender(object sender, EventArgs e) { Label1.Text = (string)HttpContext.Current.Items["textbox"]; }
CurrentItems.aspx..這裡把兩個usercontrol放進來..
<body> <form id="form1" runat="server"> <div> <uc1:textbox ID="textbox1" runat="server" /> <br /> <uc2:label ID="label1" runat="server" /> </div> </form> </body>
執行就可以抓到值啦....感覺一整個懶..XD..
這裡就是用HttpContext.Current.Items["abc"]這東西..
msdn說..
取得索引鍵/數值集合,其可用以在 HTTP 要求期間,於 IHttpModule 介面和 IHttpHandler 介面之間組織並共用資料。
所以非常適合短暫的存取資料..usercotrol傳遞資料..
參考:
http://msdn2.microsoft.com/zh-tw/library/system.web.httpcontext.items.aspx