1. 程式人生 > >【專案經驗】——ASP.NET頁面間傳值

【專案經驗】——ASP.NET頁面間傳值

最近專案中涉及到很多頁面傳值的內容,今天,就和大家分享一下最常用的集中ASP.NET頁面間傳值的幾種方法。

一、QueryString傳值

QueryString是平常傳值中用的比較多的一種方式,使用比較簡單,對於安全性要求不高時傳遞數字和文字值比較有效,但是會將其值暴露在位址列中,安全性不高。其次,不能傳遞物件。

Demo:
1、在源頁面中構造URL地址,寫出需要傳輸的值,用Response.Redirect(URL)重定向到URL中

private void Button1_Click(object sender, System.EventArgs e) 
{ 
  string
s_url;   s_url = "b.aspx?name=" + "楊曉敏";   Response.Redirect(s_url); }

2、在新頁面中用Request.QueryString[“name”];獲取Url中傳遞的值

private void Page_Load(object sender, EventArgs e) 
{ 
  lblName.Text = Request.QueryString["name"]; 
}

二、Cookie

這個也是大家常使用的方法,Cookie用於在使用者瀏覽器上儲存小塊的資訊,儲存使用者的相關資訊,比如使用者訪問某網站時使用者的ID,使用者的偏好等,使用者下次訪問就可以通過檢索獲得以前的資訊。所以Cookie也可以在頁面間傳遞值。Cookie通過HTTP頭在瀏覽器和伺服器之間來回傳遞的。Cookie只能包含字串的值,如果想在Cookie儲存整數值,那麼需要先轉換為字串的形式。

cookie是放在客戶端的,與ASP.NET中的內建物件Request配合使用。其使用非常簡單,是保持使用者狀態常用的方法。

Demo:
1、在源頁面中建立需要傳遞的名稱和值構造Cookie物件。

private void Button1_Click(object sender, System.EventArgs e)
{
  HttpCookie objCookie = new HttpCookie("myCookie","Hello,Cookie!");
  Response.Cookies.Add(objCookie); 
}

2、在目的頁面的程式碼使用Cookie物件取出傳遞的值。

string myName1Value;
myName1Value = Request.Cookies[ "myCookie" ].Value;

三、Session

Session是最常用的方法了,操作與Application相似,作用於使用者個人,過量的儲存會導致伺服器記憶體資源耗盡。Session與Cookie的一個本質的區別是,Cookie是存放在客戶端,而session是存放在服務端的。

Session使用簡單,不僅能傳輸簡單資料型別,還能傳遞物件,對傳輸資料量的大小沒有限制。但是,當儲存大量資料時,會消耗過多的伺服器資源。

Demo:
1.在源頁面的程式碼中建立你需要傳遞的名稱和值構造Session變數

private void Button1_Click(object sender, System.EventArgs e) 
{ 
  Session["name"] = Label.Text; 
}

2、在目的頁面的程式碼使用Session變數取出傳遞的值

private void Page_Load(object sender, EventArgs e) 
{ 
  string name; 
  name = Session["name"].ToString(); 

值得注意的是,Session在不用時,可以進行銷燬,銷燬所有:Session.Clear(); 銷燬某個:Session.Remove(“SessionName”)

四、Application

Application物件的作用範圍是整個全域性,也就是說對所有使用者都有效。它在整個應用程式生命週期中都是有效的,類似於使用全域性變數一樣,所以可以在不同頁面中對它進行存取。它和Session變數的區別在於,前者是所有的使用者共用的全域性變數,後者是各個使用者獨有的全域性變數。

Application使用較為簡單,同樣能傳輸簡單資料和物件,但教Session佔用較少的伺服器資源。但是作為全域性變數容易被誤操作,所以單個使用者使用的變數一般不能用Application;

Demo:
1、建立你需要傳遞的名稱和值構造Application變數

private void Button1_Click(object sender, System.EventArgs e) 
{ 
  Application["name"] = Label1.Text; 
}

2、在目的頁面的程式碼使用Application變數取出傳遞的值

private void Page_Load(object sender, EventArgs e) 
{ 
  string name; 
  Application.Lock(); 
  name = Application["name"].ToString(); 
  Application.UnLock(); 
}

注意:為了防止併發修改,經常用lock和unlock方法來鎖定和解鎖。

今天就簡單的介紹一下這四種常用的頁面間傳值的方法,更多方法,請關注我的下篇部落格。