Web程式中網頁間資料傳遞方法小結

來源:互聯網
上載者:User
web|程式|資料|網頁 介紹

  我們總是會遇到這樣的情況,需要將數值從一個網頁傳遞到另一個網頁。在這篇文章中,向你展示了幾種從一個網頁向另一個網頁傳遞數值的幾種方法。在此例子中,建立的網頁由一個文本控制項和幾個按鈕控制項組成。在文字框中輸入的資料通過被標識在按鈕控制項中的不同方法從一個網頁傳遞到另一個網頁。

  Response.Redirect

  讓我們首先看一看如何使用Response.Redirect方法傳遞資料。這是它們之中最簡單的方法。在文字框中輸入一些資料,並且當你輸入完成資料後,按下“Respose.Redirect”按鈕。我們會得到一個提示,有時我們想在catch程式中傳遞另一個網頁,意味著捕捉到例外程式並且向另一個網頁傳遞。如果你試圖這樣做,它會給你一個System.Threading例外程式。因為你想遺留下一個線程向另一個網頁傳遞資料,所以這個例外程式就會被拋出。

Response.Redirect("WebForm5.aspx",false);
  這個語句告訴編譯器定位到“WebForm5.aspx”,這裡的“false”意味著在當前網頁不能結束你正在做的事情。應該看一看線程發布命令的System.Threading類。在下面,看一看按鈕事件的C#代碼。“txtName”文本控制項的名字,文字框的內的值傳遞到一個叫做“WebForm5.aspx”的網頁。在“?”之後的“Name”符號只是一個臨時的響應變數,這個變數保持著文本的數值。

private void Button1_Click(object sender, System.EventArgs e)
{
 // Value sent using HttpResponse
 Response.Redirect("WebForm5.aspx?Name="+txtName.Text);
}
  好的,到這種觀點為止,你使用Response發送了數值。剛剛,在此我收集到了這些數值,所以在“WebForm5.aspx”page_Load事件中,寫入這些代碼。首先,我們檢查到輸入的值不為null。如果不是這樣,我們只是簡單地在網頁上使用Label控制項顯示數值。注意:如果你使用Response.Redirect方法來傳遞這些數值,所有這些數值在瀏覽器的URL中都是不可見的。你絕不能使用Response.Redirect來傳遞信用證號碼和機密資訊。

if (Request.QueryString["Name"]!= null)
Label3.Text = Request.QueryString["Name"];
  Cookies

  接下來使用Cookies。Cookies在伺服器端建立,但是用戶端省略。在此 “Cookies” 按鈕的click事件中,寫入以下代碼:

HttpCookie cName = new HttpCookie("Name");
cName.Value = txtName.Text;
Response.Cookies.Add(cName);
Response.Redirect("WebForm5.aspx");
  首先,建立一個cookie命名為“cName”。既然一個cookie執行個體可以擁有許多數值,告訴編譯器這個cookie持有“Name”數值。我們將它賦值給TextBox並且最結後將它加入Response流,再使用Response.Redirect方法傳遞給其它網頁。

  讓我們看一看如何得到被另一個網頁傳遞的cookie數值。

if (Request.Cookies["Name"] != null )
Label3.Text = Request.Cookies["Name"].Value;
  如你所看到的,象我們以前做一的一樣正是使用同一種方法,剛剛我們在Request.QueryString之內,使用了Request.Cookies。記注一些瀏覽器不接收cookies。

Session Variables

  接下來我們看一看session變數,這些變數由伺服器來處理。第一個響影一從用戶端傳遞到伺服器,Sessions就建立了,並且當使用者關閉瀏覽器視窗或者一些異常操作發生,session就會結束。給你一些可以使用session變數來傳遞數值的方法。在下面你看到為使用者建立的Session和 “Name”是關鍵字,也如知名的Session關鍵字一樣,關鍵字被賦給TextBox數值。

// Session Created

Session["Name"] = txtName.Text;
Response.Redirect("WebForm5.aspx");

// The code below shows how to get the session value.
// This code must be placed in other page.

if(Session["Name"] != null)
 Label3.Text = Session["Name"].ToString();
 Application Variables
  有時,我們需要存取來自網頁任何地方的數值。因為那樣,可以使用Application變數。這裡有一小段代碼,這段代碼顯示如何做到那些事情。一旦建立Application變數並且為其賦值,在應用程式的任何地方都可以重新得到它的值。

// This sets the value of the Application Variable

Application["Name"] = txtName.Text;
Response.Redirect("WebForm5.aspx");

// This is how we retrieve the value of the Application Variable

if( Application["Name"] != null )
Label3.Text = Application["Name"].ToString();
  HttpContext

  可以使用HttpContext從網頁中重新得到數值。通過使用方法的屬性獲得那些數值。既然它們易於編寫代碼和修改,使用屬性是一種好方法。在你的第一個網頁中,製造一個屬性,這個屬性可以返回TextBox的值。

public string GetName
{
 get { return txtName.Text; }
}
  我們使用Server.Transfer來將此控制項發送到一個新網頁。注意:Server.Transfer僅僅將此控制項傳遞到新的網頁並且不重新置放該網頁,這意味著你會看到在URL中舊網頁的地址。簡單地在“Server.Transfer”按鈕單擊事件,並且增加下列代碼。

Server.Transfer("WebForm5.aspx");
  現在,讓我們定位網頁,數值就傳遞到該網頁上,在這種情況下使用的該網頁是“webForm5.aspx”。

// You can declare this Globally or in any event you like

WebForm4 w;

// Gets the Page.Context which is Associated with this page

w = (WebForm4)Context.Handler;

// Assign the Label control with the property "GetName" which returns string

Label3.Text = w.GetName;
Special Note
  特別注意 與你看到的一樣,從一個網頁向別一網頁傳遞數值時有不同的方法。每一個方法有它自己的優點也有其缺點。所以,當你傳遞數值時,選擇好你所需要的所以你就會有一種好方法,這種方法對你是最為可行的。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。