當前位置:成語大全網 - 新華字典 - 列舉ASP.NET頁面之間傳遞值的幾種方式

列舉ASP.NET頁面之間傳遞值的幾種方式

1 .列舉ASP.NET 頁面之間傳遞值的幾種方式。

1).使用QueryString, 如....?id=1; response. Redirect()....

2).使用Session變量

3).使用Server.Transfer

為了在頁面之間傳遞變量內容,ASP.NET給了我們幾個選擇。壹種選擇是使用QueryString 屬性

壹:QueryString. 可以使用查詢字符串請求網頁。ASP.NET中的QueryString訪問此信息。當妳加載file.html?x = y時,它解析“x”和“y”。 首先,我們看到壹個.aspx Web窗體頁面,在用戶訪問Default.aspx時執行。這裏的代碼是代碼隱藏部分Default.aspx.cs。

嘗試在 URL 的末尾添加字符串“ ?param = dotnet ”。Response.Write將被觸發。

基於: .NET QueryString示例:C#

using System;

using System.Web.UI;

public partial class _Default : Page

{

protected void Page_Load(object sender, EventArgs e)

{

string v = Request.QueryString["param"];

if (v != null)

{

Response.Write("param is ");

Response.Write(v);

}

}

}

結果, Page打印param查詢的值,該值是字符串值: param is dotnet 。

兩個參數。要繼續,我們測試兩個查詢字符串URL參數。這是開發中相當普遍的要求。可能必須同時使用其中壹個或兩個。

帶有多個參數的QueryString示例:C#

using System;

using System.Web.UI;

public partial class _Default : Page

{

protected void Page_Load(object sender, EventArgs e)

{

string v = Request.QueryString["param"];

if (v != null)

{

Response.Write("param is ");

Response.Write(v);

}

string x = Request.QueryString["id"];

if (x != null)

{

Response.Write(" id detected");

}

}

}

測試代碼這個網址: ?param=first&id=true

要進行測試,請在Internet瀏覽器(例如Internet Explorer或Firefox)的URL末尾鍵入測試URL。該字符串指定“param”查詢等於“first”。並且“id”參數等於“true”。

Quote:可以使用鍵或索引訪問的關聯String鍵和String值的集合。

在QueryString上使用HasKeys的頁面:C#

using System;

using System.Web.UI;

using System.Collections.Specialized;

public partial class _Default : Page

{

protected void Page_Load(object sender, EventArgs e)

{

// Get collection

NameValueCollection n = Request.QueryString;

// 查看是否存在任何查詢字符串

if (n.HasKeys())

{

// 獲取第壹個鍵和值

string k = n.GetKey(0);

string v = n.Get(0);

// 測試不同的鍵

if (k == "param")

{

Response.Write("param is " + v);

}

if (k == "id")

{

Response.Write("id is " + v);

}

}

}

}

Request.QueryString還可以使用它們在查詢字符串中的位置來檢索此值。

private void Page_Load(object sender,

System.EventArgs e)

{

this.txtBox1.Text = Request.QueryString[0];

this.txtBox2.Text = Request.QueryString[1];

}

foreach( string s in Request.QueryString)

{

Response.Write(Request.QueryString[s]);

}

要麽

for (int i =0;i < Request.QueryString.Count;i++)

{

Response.Write(Request.QueryString[i]);

}

這種方法的缺點

QueryString 有壹個最大長度,如果妳必須發送很多信息這種方法不起作用。

QueryString 在您的瀏覽器的地址部分中可見,因此您不應將其與敏感信息壹起使用。

QueryString 不能用於發送&和空格字符。

用%20替換空格和用%26替換空格。

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

{

string p1 = this.txtName.Text.Replace("&","%26");

p1 = this.txtName.Text.Replace(" ","%20");

string p2 = this.txtLastName.Text.Replace("&","%26");

p2 = this.txtName.Text.Replace(" ","%20");

"WebForm2.aspx?" +

"Name=" + p1 +

"&LastName=" + p2;

Response.Redirect(p2);

}

也可以使用Server.UrlEncode。Server.UrlEncode 方法更改查詢字符串,以便它們不會產生問題。

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

{

Response.Redirect("WebForm2.Aspx?" +

"Name=" + Server.UrlEncode(this.txtName.Text) +

"&LastName=" + Server.UrlEncode(this.txtLastName.Text));

}

二、Session&Cookie

Session 使用簡單,不僅能傳遞簡單數據類型,還能傳遞對象。.數據量大小是不限制的。在Session變量存儲大量的數據會消耗較多的服務器資源。容易丟失。在源頁面的代碼中創建妳需要傳遞的名稱和值構造Session變量: Session["Name"]="Value(Or Object) ";在目的頁面的代碼使用Session變量取出傳遞的值。 Result = Session["Nmae"] 註意:session不用時可以銷毀它,銷毀的方法是:清除壹個: Session.Remove("session名") ;清除所有: Session.Clear();

string city = "Seattle";

// 保存到Web窗體頁面類中的會話狀態

Session["City"] = city;

//從Web窗體頁面類中的會話狀態讀取。

city = (string)(Session["City"]);

//在Web窗體頁面類之外,使用HttpContext.Current。

HttpContext context = HttpContext.Current;

context.Session["FirstName"] = firstName;

firstName = (string)(context.Session["FirstName"]);

Session類類似於鍵類型字符串和值類型對象的字典。這允許存儲任何類型的變量,並稍後通過名稱引用它。

什麽是Cookies?

Cookie是在客戶端的系統或客戶端瀏覽器內存上創建的小文件(如果是臨時的)。我們可以在客戶端系統中存儲小塊信息,並在需要時使用它。 最有趣的是它與用戶透明地工作 。它可以輕松地在Web應用程序的任何位置使用。 Cookies以純文本格式存儲信息 。如果Web應用程序使用cookie,則服務器發送cookie,客戶端瀏覽器將存儲它。然後,瀏覽器在下次請求頁面時將cookie返回給服務器。使用cookie的最常見示例是 存儲用戶信息,用戶首選項,密碼記憶選項 等.Cookies有許多優點和缺點。

Cookies是如何開始的?

當客戶端向服務器請求時,服務器將cookie發送到客戶端。後續請求可以引用相同的cookie。例如,如果 codeproject.com 將會話ID存儲為cookie,則當客戶端第壹次在服務器上命中時,服務器會生成會話ID並將其作為cookie發送到客戶端

瀏覽器和Web服務器負責交換cookie信息。對於不同的站點,瀏覽器以不同的方式保留cookie 如果頁面需要來自cookie的信息,當該URL被命中時,首先它在本地系統中搜索cookie信息,然後將其移動到具有該信息的服務器。

Cookies的優點

以下是在Web應用程序中使用cookie的主要優點:

它的使用和實現非常簡單。

瀏覽器負責發送數據。

對於包含cookie的多個站點,瀏覽器會自動排列它們。

Cookie的缺點

它以簡單的文本格式存儲數據,因此根本 不安全 。

Cookie數據有壹個大小限制( 4096字節/ 4KB )。

允許的最大cookie數量也是有限的。大多數瀏覽器將cookie的數量限制為20.如果新的cookie出現,舊的cookie將被丟棄。有些瀏覽器最多支持 300 個。

如何創建Cookie

要使用cookie,我們需要使用命名空間System.web。

方式1(使用HttpCookies類)

HttpCookie StudentCookies = new HttpCookie("StudentCookies");

StudentCookies.Value = TextBox1.Text;

StudentCookies.Expires = DateTime.Now.AddHours(1);

Response.Cookies.Add(StudentCookies);

方式2(直接使用Response)

Response.Cookies["StudentCookies"].Value = TextBox1.Text;

Response.Cookies["StudentCookies"].Expires = DateTime.Now.AddDays(1);

方式3(同壹個cookie中的多個值)

Response.Cookies["StudentCookies"]["RollNumber"] = TextBox1.Text;

Response.Cookies["StudentCookies"]["FirstName"] = "Abhimanyu";

Response.Cookies["StudentCookies"]["MiddleName"] = "Kumar";

Response.Cookies["StudentCookies"]["LastName"] = "Vatsa";

Response.Cookies["StudentCookies"]["TotalMarks"] = "499";

Response.Cookies["StudentCookies"].Expires = DateTime.Now.AddDays(1);

查看代碼,看看我們如何創建cookie並使用Web響應添加它。

已創建的cookie將壹直存在,直到瀏覽器關閉。我們可以堅持使用cookie。

如何從Cookies中讀取數據

現在是時候從cookie中檢索數據了。在閱讀cookie之前,首先我們需要檢查是否找到了cookie。在閱讀cookie之前檢查cookie始終是壹個好習慣,因為瀏覽器可能已禁用c?ookie。

string roll = Request.Cookies["StudentCookies"].Value; //For First Way

string roll = Request.Cookies["StudentCookies"].Value; //For Second Way

string roll;

roll = Request.Cookies["StudentCookies"]["RollNumber"];

roll = roll + " " + Request.Cookies["StudentCookies"]["FirstName"];

roll = roll + " " + Request.Cookies["StudentCookies"]["MiddleName"];

roll = roll + " " + Request.Cookies["StudentCookies"]["LastName"];

roll = roll + " " + Request.Cookies["StudentCookies"]["TotalMarks"];

Label1.Text = roll;

如何清除cookie信息?

我們可以在cookie文件夾中清除客戶端機器上的cookie信息

設置到cookie對象的到期時間

userInfo.Expires = DateTime.Now.AddHours(1);

它會在壹小時內清除cookie。

三、Application對象

Application對象的作用範圍是整個全局,也就是說對所有用戶都有效。它在整個應用程序生命周期中都是有效的,類似於使用全局變量壹樣,所以可以在不同頁面中對它進行存取。它和Session變量的區別在於,前者是所有的用戶***用的全局變量,後者是各個用戶獨有的全局變量。

舉個例子:網站訪問數。多個請求訪問時都可以對它進行操作。

優點:1.使用簡單,消耗較少的服務器資源。

2.不僅能傳遞簡單數據,還能傳遞對象。

3.數據量大小是不限制的。

缺點:1.作為全局變量容易被誤操作。所以單個用戶使用的變量壹般不能用application。

使用方法:1.在源頁面的代碼中創建妳需要傳遞的名稱和值構造Application變量:Application["Nmae"]="Value(Or Object)";

2.在目的頁面的代碼使用Application變量取出傳遞的值。Result = Application["Nmae"]

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

string name;

Application.Lock();

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

Application.UnLock();

四、Server.Transfer

終止當前頁面的執行並開始執行當前請求的新頁面。

Server.Transfer("Logon.aspx", true);