版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
一.使用QueryString使用QueryString在頁面間傳遞值是一種非常常見的方法,我們?cè)贏SP中就常常用到。優(yōu)點(diǎn)和缺點(diǎn)優(yōu)點(diǎn):使用簡單,對(duì)于安全性要求不高時(shí)傳遞數(shù)字或是文本值非常有效。缺點(diǎn):缺乏安全性,由于它的值暴露在瀏覽器的URL地址中的。不能傳遞對(duì)象。使用方法在源頁面的代碼中用需要傳遞的名稱和值構(gòu)造URL地址。在源頁面的代碼用Response.Redirect(URL);重定向到上面的URL地址中。在目的頁面的代碼使用Request.QueryString["name"];取出URL地址中傳遞的值。應(yīng)用舉例源頁面*.aspx的代碼:privatevoidButton1_Click(objectsender,System.EventArgse){stringurlAddress;stringName1;stringName2;stringName3;stringName1Value="HelloName1";intName2Value=1234567;stringName3Value="你好名稱3";urlAddress="destinationWebForm.aspx?Name1="+Name1Value+"&"+"Name2="+Name2Value.ToString()+"&"+"Name3="+Name3Value;Response.Redirect(urlAddress);}目的頁面destinationWebForm.aspx的代碼:privatevoidPage_Load(objectsender,System.EventArgse){stringmyName1Value;intmyName2Value;stringmyName3Value;myName1Value=Request.QueryString["Name1"];myName2Value=Convert.ToInt32(Request.QueryString["Name2"]);
myName3Value=Request.QueryString["Name3"];}(4)可能出現(xiàn)的問題1在處理Resonse.QueryString函數(shù)漢字參數(shù)傳遞時(shí),發(fā)生不能完整傳遞參數(shù)的具體值的錯(cuò)誤,解決有兩個(gè)方法。方法一:需要重新設(shè)置Web.config中的encoding和全球化設(shè)置。1、 首行:<?xmlversion="1.0"encoding="utf-8"?>更改為:<?xmlversion="1.0"encoding="GB2312"?>2、 <!--全球化此節(jié)設(shè)置應(yīng)用程序的全球化設(shè)置。--><globalizationrequestEncoding="utf-8"responseEncoding="utf-8"/>更改為:<!--全球化此節(jié)設(shè)置應(yīng)用程序的全球化設(shè)置。--><globalizationrequestEncoding="GB2312"responseEncoding="GB2312"/>[1]方法二:使用Server.UrlEncode和Server.UrlDecode對(duì)漢字或者特殊字符進(jìn)行編碼和解碼。二、使用Application變量使用Application變量是在頁面間傳遞值的第二種方式。Application變量在整個(gè)應(yīng)用程序生命周期中都是有效的,類似于使用全局變量一樣,所以可以在不同頁面中對(duì)它進(jìn)行存取。它和Session變量的區(qū)別在于,前者是所有的用戶共用的全局變量,后者是各個(gè)用戶獨(dú)有的全局變量。舉個(gè)例子來解釋:網(wǎng)站訪問的計(jì)數(shù)器變量一般采用Application變量,多個(gè)請(qǐng)求訪問時(shí)共享這一個(gè)變量,均可對(duì)它進(jìn)行操作,該變量可以被整個(gè)應(yīng)用程序的各個(gè)頁面直接使用。
用戶登陸的帳號(hào)名一般采用Session變量,多個(gè)請(qǐng)求訪問時(shí)有各自的Session變量,只能對(duì)自己的該Session變量進(jìn)行操作,整個(gè)應(yīng)用程序的各個(gè)頁面直接使用這個(gè)變量來獲得用戶的基本信息。優(yōu)點(diǎn)和缺點(diǎn)優(yōu)點(diǎn):使用簡單,消耗較少的服務(wù)器資源。不僅能傳遞簡單數(shù)據(jù),還能傳遞對(duì)象。數(shù)據(jù)量大小是不限制的。缺點(diǎn):1.作為全局變量容易被誤操作。使用方法在源頁面的代碼中創(chuàng)建你需要傳遞的名稱和值構(gòu)造Application變量:Application["Nmae"]="Value(OrObject)";在目的頁面的代碼使用Application變量取出傳遞的值。Result=Application["Nmae"]應(yīng)用舉例源頁面*.aspx的代碼:privatevoidButton1_Click(objectsender,System.EventArgse){stringName1Value="HelloName1";intName2Value=1234567;Application["Name1"]=Name1Value;Application["Name2"]=Name2Value;}目的頁面*.aspx的代碼:privatevoidPage_Load(objectsender,System.EventArgse){stringmyName1Value;intmyName2Value;myName1Value=Application["Name1"].ToString();myName2Value=(int)Application["Name2"];}三、使用Session變量
使用Application變量是在頁面間傳遞值的第三種方式°Session變量和Application變量非常類似,它們的區(qū)別也巳經(jīng)在上面關(guān)于Application變量時(shí)提到了。優(yōu)點(diǎn)和缺點(diǎn)優(yōu)點(diǎn):使用簡單,不僅能傳遞簡單數(shù)據(jù)類型,還能傳遞對(duì)象。數(shù)據(jù)量大小是不限制的。缺點(diǎn):1.在Session變量存儲(chǔ)大量的數(shù)據(jù)會(huì)消耗較多的服務(wù)器資源。使用方法在源頁面的代碼中創(chuàng)建你需要傳遞的名稱和值構(gòu)造Session變量:Session["Nmae"]="Value(OrObject)";在目的頁面的代碼使用Session變量取出傳遞的值。Result=Session["Nmae"]應(yīng)用舉例與Application變量類似,只是將Application替換為Session即可。四、使用Cookie對(duì)象使用Cookie對(duì)象是在頁面間傳遞值的第四種方式。Cookie用于在用戶瀏覽器上存儲(chǔ)小塊的信息,保存用戶的相關(guān)信息,比如用戶訪問某網(wǎng)站時(shí)用戶的ID,用戶的偏好等,用戶下次訪問就可以通過檢索獲得以前的信息。所以Cookie也可以在頁面間傳遞值。Cookie通過HTTP頭在瀏覽器和服務(wù)器之間來回傳遞的。Cookie只能包含字符串的值,如果想在Cookie存儲(chǔ)整數(shù)值,那么需要先轉(zhuǎn)換為字符串的形式??梢酝ㄟ^遍歷Request對(duì)象的Cookie集合可以獲得所有的瀏覽器所有的Cookie。方法如下:foreach(stringstrKeyinRequest.Cookies){lblCookies.Text+=strKey+"="+Request.Cookies[strKey].Value;}(1)優(yōu)點(diǎn)和缺點(diǎn)優(yōu)點(diǎn):1.使用簡單,是保持用戶狀態(tài)的一種非常常用的方法。比如在購物網(wǎng)站中用戶跨多個(gè)頁面表單時(shí)可以用它來保持用戶狀態(tài)。缺點(diǎn):1.常常被人認(rèn)為用來收集用戶隱私而遭到批評(píng)。
(2)使用方法在源頁面的代碼中創(chuàng)建你需要傳遞的名稱和值構(gòu)造Cookie對(duì)象:HttpCookieobjCookie=newHttpCookie("myCookie","Hello,Cookie!");Response.Cookies.Add(cookie);在目的頁面的代碼使用Cookie對(duì)象取出傳遞的值:Result=Request.Cookies["myCookie"].Value;(3)應(yīng)用舉例源頁面*.aspx的代碼:privatevoidButton1_Click(objectsender,System.EventArgse){HttpCookieobjCookie=newHttpCookie("myCookie","Hello,Cookie!");Response.Cookies.Add(objCookie);}目的頁面*.aspx的代碼:privatevoidPage_Load(objectsender,System.EventArgse){stringmyName1Value;myName1Value=Request.Cookies["myCookie"].Value;}五、使用Server.Transfer使用Server.Transfer變量是在頁面間傳遞值的第五種方式。上面的四個(gè)方法我們?cè)贏SP中常常使用,但是這個(gè)方法是在ASP.NET中新出現(xiàn)的‘Server.Transfer是從當(dāng)前的ASPX頁面轉(zhuǎn)到新的ASPX頁面,服務(wù)器端執(zhí)行新頁并輸出,在新頁面中通過Context.Handler來獲得前一個(gè)頁面?zhèn)鬟f的各種數(shù)據(jù)類型的值、表單數(shù)據(jù)、QueryString.由于重定向完全在服務(wù)器端完成,所以客戶端瀏覽器中的URL地址是不會(huì)改變的。調(diào)用Server.Transfer時(shí),當(dāng)前的ASPX頁面終止執(zhí)行,執(zhí)行流程轉(zhuǎn)入另一個(gè)ASPX頁面,但新的ASPX頁面仍使用前一ASPX頁面創(chuàng)建的應(yīng)答流。[2]在這里比較一下Server.Transfer和在''一"中使用的Response.Redirect的區(qū)別。Server.Transfer在服務(wù)器端完成,所以客戶端瀏覽器中的URL地址是不會(huì)改變的;Response.Redirect是客戶端完成,向服務(wù)器端提出新的頁面處理請(qǐng)求,所以客戶端瀏覽器中的URL地址是會(huì)改變的。Server.Transfer在服務(wù)器端完成,不需要客戶端提出請(qǐng)求,減少了客戶端對(duì)服務(wù)器端提出請(qǐng)求。[2]Server.Transfer只能夠轉(zhuǎn)跳到本地虛擬目錄指定的頁面,也就是工程項(xiàng)目中的頁面,而Respons
e.Redirect則十分靈活,可以跳轉(zhuǎn)到任何URL地址。(4)Server.Transfer可以將前一個(gè)頁面的各種類型的值傳到新的頁面;Response.Redirect則只能借助URL中帶參數(shù)或是結(jié)合上面四種辦法把各種類型的值傳到新的頁面。繼續(xù)我們的Server.Transfer用法。優(yōu)點(diǎn)和缺點(diǎn)優(yōu)點(diǎn):直接在服務(wù)器端重定向,使用簡單方便,減少了客戶端對(duì)服務(wù)器端提出請(qǐng)求??梢詡鬟f各種數(shù)據(jù)類型的值和控件的值。缺點(diǎn):1.客戶端瀏覽器中的URL地址是不改變,會(huì)導(dǎo)致在新的頁面可能出現(xiàn)一些意想不到的問題。比如如果源頁面和目的頁面不在同一個(gè)虛擬目錄或其子目錄下,那么使用相對(duì)路徑的圖片、超鏈接都會(huì)導(dǎo)致錯(cuò)誤的指向。[3]使用方法在源頁面的代碼中,使用Page類的Server.Transfer跳到另一個(gè)頁面?zhèn)鬟f頁面數(shù)據(jù):Server.Transfer("destinationWebForm.aspx","false")。在目的頁面中,使用Context.Handler來接收數(shù)據(jù):FormerPageformerPage=(FormerPage)Context.Handler;然后用formerPage的屬性和方法來獲取前一個(gè)頁面的值,或者直接用Context.Items["myParameter"]來獲取前一個(gè)頁面的值。需要注意的是獲取這些值必須在新的頁面首次加載時(shí),才能正確獲取上一頁面的各種數(shù)據(jù)類型或是控件的值。在以后的postback時(shí),就無法獲取上一頁面的各種數(shù)據(jù)類型或是控件的值了,因?yàn)榇藭r(shí)得到的當(dāng)前頁面的實(shí)例.所以需要在新頁面(destinationWebForm.aspx)的Page_Load()事件中使用if(!IsPostBack)把獲取前一個(gè)頁面的值的代碼包含起來,才能獲得前一個(gè)頁面?zhèn)鬟f的各種數(shù)據(jù)類型的值、表單數(shù)據(jù)、QueryString。應(yīng)用舉例源頁面FormerPage.aspx的代碼:publicstringHelloContextAttribute{get{return"UseAttribute:Hello,Context";
}}publicstringHelloContextMethod(){return"CallMethod:Hello,Context!";}publicstringTextBoxValue{get{returnTextBox1.Text;}}privatevoidButton1_Click(objectsender,System.EventArgse){stringName1Value="Hello,Name1!";TextBox1.Text="Hello,TextBox1!";ArrayListmyList=newArrayList(3);//創(chuàng)建動(dòng)態(tài)數(shù)組myList.Add("Hello,Array1!");//向動(dòng)態(tài)數(shù)組中添加新的值myList.Add("Hello,Array2!");myList.Add("Hello,Array3!");//Context可保存任意數(shù)據(jù)類型,Context字典特定于某個(gè)Http請(qǐng)求?!▽?duì)于不同客戶端,值是不一樣的。Context.Items["destinationList"]=myList;〃在Context.Items中保存動(dòng)態(tài)數(shù)組Context.Items.Add("newContext","Hello,NewContext");〃在Context.Items中保存一組名稱-值的數(shù)據(jù)//Server.Transfer第二參數(shù)如果為true,表示本頁面的Form和QuerryString的值在新頁面繼續(xù)有效?!ǚ駝t在新頁面無法獲得TextBox1的值。Server.Transfer("destinationWebForm.aspx?Name1="+Name1Value,true);}目的頁面destinationWebForm.aspx的代碼:privatevoidPage_Load(objectsender,System.EventArgse)
{if(!IsPostBack){try{stringhelloContextAttribute;stringhelloContextMethod;stringtextBoxValue;stringcontextItemsValue;stringqueryString;ArrayListlistResult;FormerPageformerPag
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江警官職業(yè)學(xué)院《品牌形象專項(xiàng)設(shè)計(jì)一》2023-2024學(xué)年第一學(xué)期期末試卷
- 中國民用航空飛行學(xué)院《現(xiàn)代交換技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 鄭州旅游職業(yè)學(xué)院《當(dāng)代資本主義》2023-2024學(xué)年第一學(xué)期期末試卷
- 小學(xué)預(yù)算編制收支審批制度
- 浙江傳媒學(xué)院《應(yīng)用程序設(shè)計(jì)實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 漳州城市職業(yè)學(xué)院《長跑》2023-2024學(xué)年第一學(xué)期期末試卷
- 深度學(xué)習(xí)在元數(shù)據(jù)分析中的探索
- 雙十二品牌提升策略模板
- 專業(yè)基礎(chǔ)-房地產(chǎn)經(jīng)紀(jì)人《專業(yè)基礎(chǔ)》點(diǎn)睛提分卷3
- 2024-2025學(xué)年江蘇省無錫市江陰市八年級(jí)(上)期末數(shù)學(xué)試卷
- 醫(yī)療廢物管理?xiàng)l例-題及答案
- 眼內(nèi)炎患者的護(hù)理查房ppt
- 理論力學(xué)-上海交通大學(xué)中國大學(xué)mooc課后章節(jié)答案期末考試題庫2023年
- SRD控制器使用說明書
- 雨水暗溝施工方案實(shí)用文檔
- 浙教版七年級(jí)下冊(cè)科學(xué)全冊(cè)課件
- 非計(jì)劃性拔管風(fēng)險(xiǎn)評(píng)估表二
- 外貿(mào)財(cái)務(wù)對(duì)賬單英文版-帶公式
- 北教版四年級(jí)綜合實(shí)踐下冊(cè) 第十一課飲料中的學(xué)問
- 英語蘇教版譯林五年級(jí)下冊(cè)單詞默寫表
- 企業(yè)組織機(jī)構(gòu)架構(gòu)圖
評(píng)論
0/150
提交評(píng)論