ASP.NET跨頁面傳值技巧總結

定義:統指WEB頁面之間的傳值,包括簡單的頁面表單傳值和頁面程序中的變量傳值。

  變量傳值:可分爲簡單的變量如 int a,string b;等,還包括對複雜的對象進行傳遞。

  現以asp.net 爲例

  ASP.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。

  a.aspx之C#代碼

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

  {

  Application["name"] = Label1.Text;

  Server.Transfer("b.aspx");

  }

  b.aspx中C#代碼

  private void Page_Load(object sender, EventArgs e)

  {

  string name;

  Application.Lock();

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

  Application.UnLock();

  }

  3. 使用Session變量

  想必這個肯定是大家使用中最常見之用法了,其操作與Application類似,作用於用戶個人,所以,過量之存儲會導致服務器內存資源之耗盡。

  a.aspx之C#代碼

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

  {

  Session["name"] = Label.Text;

  }

  b.aspx中C#代碼

  private void Page_Load(object sender, EventArgs e)

  {

  string name;

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

  }

  4. 使用Cookie對象變量

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

  a.aspx之C#代碼

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

  {

  HttpCookie cookie_name = new HttpCookie("name");

  cookie_name.Value = Label1.Text;

  Reponse.AppendCookie(cookie_name);

  Server.Transfer("b.aspx");

  }

  b.aspx中C#代碼

  private void Page_Load(object sender, EventArgs e)

  {

  string name;

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

  }

  5. 使用Server.Transfer方法

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

  a.aspx之C#代碼

  public string Name

  {

  get{ return Label1.Text;}

  }

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

  {

  Server.Transfer("b.aspx");

  }

  b.aspx中C#代碼

  private void Page_Load(object sender, EventArgs e)

  {

  a newWeb; //實例a窗體

  newWeb = (source)Context.Handler;

  string name;

  name = newWeb.Name;

  }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章