天天看點

解析6種ASP.NET跨頁面傳值的方法-.Net程式設計教程

1.  使用QueryString變量  

QueryString是一種非常簡單的傳值方式,他可以将傳送的值顯示在浏覽器的位址欄中。如果是傳遞一個或多個安全性要求不高或是結構簡單的數值時,可以使用這個方法。但是對于傳遞數組或對象的話,就不能用這個方法了。下面是一個例子:  

a.aspx的C#代碼  

private void Button1_Click(object sender, System.EventArgs e)  

{  

    string s_url;  

    s_url = "b.aspx?name=" + Label1.Text;  

    Response.Redirect(s_url);  

}  

b.aspx中C#代碼  

private void Page_Load(object sender, EventArgs e)  

    Label2.Text = Request.QueryString["name"];  

2.  使用Application 對象變量  

Application對象的作用範圍是整個全局,也就是說對所有使用者都有效。其常用的方法用Lock和UnLock。  

    Application["name"] = Label1.Text;  

    Server.Transfer("b.aspx");  

    string name;  

    Application.Lock();  

    name = Application["name"].ToString();  

    Application.UnLock();  

3.  使用Session變量  

想必這個肯定是大家使用中最常見的用法了,其操作與Application類似,作用于使用者個人,是以,過量的存儲會導緻伺服器記憶體資源的耗盡。  

    Session["name"] = Label.Text;  

    name = Session["name"].ToString();  

4.  使用Cookie對象變量  

這個也是大家常使用的方法,與Session一樣,其是什對每一個使用者而言的,但是有個本質的差別,即Cookie是存放在用戶端的,而session是存放在伺服器端的。而且Cookie的使用要配合ASP.NET内置對象Request來使用。  

    HttpCookie cookie_name = new HttpCookie("name");  

    cookie_name.Value = Label1.Text;  

    Reponse.AppendCookie(cookie_name);  

    name = Request.Cookie["name"].Value.ToString();  

5.  使用Server.Transfer方法  

這個才可以說是面象對象開發所使用的方法,其使用Server.Transfer方法把流程從目前頁面引導到另一個頁面中,新的頁面使用前一個頁面的應答流,是以這個方法是完全面象對象的,簡潔有效。  

public string Name  

    get{ return Label1.Text;}  

    a newWeb;  //執行個體a窗體  

    newWeb = (source)Context.Handler;  

    name = newWeb.Name;  

6.Cross-Page Posting  

定位至于源網頁位于相同的應用程式的網頁,可以讀取源網頁的值和公共屬性,但是不要按浏覽器中的重新整理和上一步,這樣會照成無法預期的效果  

eg:  

aspx  

  <div>  

        您的名字: <asp:TextBox ID="name" runat="server"> </asp:TextBox>  

        <asp:Button ID="btn_name" runat="server" PostBackUrl="~/Cross-Page Posting/CrossPageTarget.aspx"  

            Text="傳送" OnClick="btn_name_Click" />  

    </div>  

cs:  

TextBox name = (TextBox)PreviousPage.FindControl("name");//非public 成員  

        Label1.Text = "歡迎你:" + name.Text;  

previouspage本身屬于page類,并且隻有在來源網頁和目标網頁屬于同一個asp.net應用程式下的時候才能引用,如果網頁不是跨網頁公布的目标,或者是網頁在不同的應用程式之中,就不會初始化previouspage屬性,就不能使用previouspage來存取任何資訊  

獲得網頁的公共屬性:  

source.cs:  

public string UserName  

    get{return aa.text;}  

cross-page posting.aspx:  

<%@ PreviousPageType VirtualPath="~/Cross-Page Posting/Source.aspx"%>  

cross-page posting.cs:  

lab.text = previousopage.username;  

//一個網頁中隻能訓示一個previousPage,不然出出現編譯錯誤 

本文轉自 韬光星夜 51CTO部落格,原文連結:http://blog.51cto.com/xfqxj/477117,如需轉載請自行聯系原作者

上一篇: ispostback