ASP.NET中的網頁間傳值
一、舉例
在淘寶上,輸入正確的使用者名稱、密碼後就可以登入到個人帳號的網頁中,例如使用者名稱WangWang。使用者WangWang無論是搜尋商品、查看商品、查看個人資訊,都會開啟很多網頁。這時候,使用者WangWang進行的所有的操作都是基於自己的帳號。換句話說,無論使用者WangWang開啟多少淘寶的網頁,只要帳號沒有退出,就是在自己的帳號下進行的操作。
在這種情況下,就涉及到網頁之間的傳值,即使用者WangWang開啟的網頁都是被標記為“WangWang”的網頁。
二、ASP.NET中常用的網頁間傳值的技術
技術一:Request . QueryString [ “ ” ]方式
技術二:Session對象
規律:無論使用哪種方法,傳值一定是分成兩步:第一步,在第一個網頁中賦值;第二步,在第二個網頁中接收傳遞過來的值。
三、Request . QueryString [ “ ” ]方式
使用這個方式傳值,是通過網址實現的。
舉例:第一步:在第一個頁面First . aspx中賦值
Response.Redirect("Second.aspx?id=100");
解釋:
Response.Redirect()方法是連結到另一個網頁
second.aspx指的是目標網頁
。說明有網頁之間的傳值
id=100說明實際要傳遞的值是100,通過名字id來指代(id這個名字是可以根據實際情況來命名的)。
如果要傳遞的資訊是使用者名稱WangWang,可以寫成
Response.Redirect("second.aspx?name=WangWang");
注意:WangWang不用使用單引號引起來。
第二步:在第二個頁面Second.aspx中接收傳遞的值
情況一:string str = Request.QueryString["id"];//即str=”100”
或者string str = Request.QueryString["name"];//即str=”WangWang”
這樣,從First.aspx網頁傳遞過來的值就在Second.aspx頁面中被string類型的變數str接收了。
情況二:接收的值直接運用於SQL語句中。
規律:一般網頁之間的傳值都是運用於SQL語句,所以要掌握這種方法。
(1)string strSQL = "select * from news where id =" +Request. QueryString ["id"];
實際得到的SQL語句是:select * from news where id =100;//前提:欄位id是整型
(2)string strSQL = "select * from news where name =’" +Request. QueryString ["name"] + "’";
實際得到的SQL語句是:select * from news where name =’WangWang’ //前提:欄位name是字元型
四、Session對象
使用Session對象相當於在整個網站內定義了一個“全域變數”,可以在所以網頁中傳遞值。
注意:使用了Session對象的網頁運行時是有先後順序的。一定是“聲明”Session對象的網頁先運行。
舉例:
第一步:在First.aspx網頁中聲明Session對象
protected void Page_Load(object sender, EventArgs e)
{
Session["Name"] = "";
//相當於聲明一個“全域變數”,這個“全域變數”可以在網頁之間傳值
}
protected void Button1_Click(object sender, EventArgs e)
{
Session["Name"] = “WangWang”; //為Session對象Name賦值
Response.Redirect("Second.aspx");//連結到另一個網頁
}
第二步:在Second.aspx網頁中使用Session對象
protected void Page_Load(object sender, EventArgs e)
{
if(Session["Name"] == "WangWang")
{
Label1.Text="使用者 WangWang:上午好。";
}
else
{
Response.Redirect("First.aspx");//如果驗證Session對象Name的值不是“WangWang”,那麼網頁直接跳轉到First.aspx中,從而實現網頁資訊的保護
}
}
注意:在使用Session對象時,運行網頁一定要先從First.aspx頁面開始運行。如果從Second.aspx開始運行,由於Session對象Name沒有聲明,也沒有賦值,會出現錯誤的。