我們來學習如何在頁面間傳遞信息,首先我們來看第一種方法,這種方法很常用,
--------------------------------------------------------------------------------
1.QueryString
使用這種分方法有幾點需要注意:
參數限制於簡單的字符串.
參數是明文傳輸且對於用戶是開放的,安全性不高.
參數的長度限制於1-2kb.
.Net 2.0不支持,需要你手工的傳遞,方法是Response.Redirect("newPage.ASPx?num ="+num.tostring());如果要傳輸多個參數在參數之間加上"&"還有一個如果的string中含有不合法的字符但是你還是需要傳輸,那麼就要使用Server.URLEncode(stringname);
讀取參數是更據參數的名稱:Request.QueryString["num"];
--------------------------------------------------------------------------------
第二中使用方法為Cross-Page posting
頁面之間,ASP.Net使用了一種"PostBackURL"技術,不過只限制於在Button control中使用(LinkButton,ImageButton).
<ASP:Button ID="Btn_CrossPage" Runat = "Server" PostBackUrl = "Crosspage.ASPx">
的二張頁面中的所有函數Page_load事件都會被強制的載入。
Protected void Page_load(Object sender,EventArgs e)
{
if(PreviousPage != null)
{
lblinfo.Text = "You came a page from "+PreviousPage.Header.Title;
}
}
--------------------------------------------------------------------------------
如果你想訪問頁面的controls,你需要將類型顯示的申明為頁面名稱
Protected void Page_load(Object sender,EventArgs e)
{
if(PreviousPage != null)
{
Crosspage1 prevpage = PreviousPage as Crosspage1;
if(prevpage != null)
{//Any code}
}
}
經過以上這步後你還是不可以完全的訪問,因為變量是保護類型的,所以你必須在申明一個共有的成員函數.
Public String GetName()
{
get{return txt1.Text+txt2.Text};
}
如果你想在任何controls中使用Cross-posting,那麼你可以使用Server.Tranfer(),它會將頁面的VIEwstate全部的放過去,我們如何鑒別是那種方式?if(PreviousPage.IsCrossPageBack)就可以解決.
--------------------------------------------------------------------------------