閆會(huì)娟
[摘? ? 要] 電子商務(wù)網(wǎng)站開發(fā)中頁面轉(zhuǎn)向和參數(shù)傳遞技術(shù)是必不可少的。本文首先總結(jié)了ASP.NET網(wǎng)站開發(fā)中Web頁面轉(zhuǎn)向和參數(shù)傳遞的方法,分析比較了這些方法的優(yōu)缺點(diǎn),然后分析了在電子商務(wù)網(wǎng)站開發(fā)中的頁面轉(zhuǎn)向和參數(shù)傳遞需求,并根據(jù)實(shí)際情況選擇用不同的方法進(jìn)行實(shí)現(xiàn)。
[關(guān)鍵詞] 網(wǎng)頁轉(zhuǎn)向;參數(shù)傳遞;ASP.NET;購(gòu)物網(wǎng)站
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2018. 21. 064
[中圖分類號(hào)] F724.6;TP311.52? ? [文獻(xiàn)標(biāo)識(shí)碼]? A? ? ? [文章編號(hào)]? 1673 - 0194(2018)21- 0152- 03
0? ? ? 引? ? 言
電子商務(wù)網(wǎng)站是非常典型的一類B/S模式的系統(tǒng),在開發(fā)中涉及不同類型的網(wǎng)頁跳轉(zhuǎn)和參數(shù)傳遞,如何根據(jù)不同的情形選擇不同的技術(shù),是向?qū)W生傳遞的重要知識(shí)點(diǎn),本文將首先介紹常用的頁面轉(zhuǎn)向方法和參數(shù)傳遞,再闡述根據(jù)電子商務(wù)網(wǎng)站開發(fā)中的情景選擇相應(yīng)的實(shí)現(xiàn)方法。在ASP.NET中可以有多種方式實(shí)現(xiàn)頁面跳轉(zhuǎn),在跳轉(zhuǎn)的同時(shí)將源頁面的重要信息(參數(shù))傳遞到目標(biāo)頁面,稱作頁面間的參數(shù)傳遞。使用不同的頁面跳轉(zhuǎn)和參數(shù)傳遞方法,其可見性、安全性和執(zhí)行效率不同。周廣清和劉建平[1]分析了web頁面跳轉(zhuǎn)和傳參方法,并在醫(yī)院信息系統(tǒng)中進(jìn)行應(yīng)用。徐少華、張華偉和李浩[2]也討論了web頁面值傳遞的實(shí)現(xiàn)方法。
1? ? ? 頁面轉(zhuǎn)向方法
1.1? ?用戶可見的超級(jí)鏈接
用戶可見的超級(jí)鏈接指當(dāng)頁面加載后直接在頁面上呈現(xiàn),在頁面設(shè)計(jì)階段完成。
網(wǎng)站中常用超級(jí)鏈接標(biāo)記即可實(shí)現(xiàn)HTML頁面和ASPX頁面之間的相互跳轉(zhuǎn),如:新書架,將在頁面顯示新書架,單擊該文字可從包含代碼的頁面跳轉(zhuǎn)到newBooks.aspx頁面。ASP.NET提供的服務(wù)器端控件HyperLink,功能與標(biāo)記類似,區(qū)別在于可進(jìn)行服務(wù)端編程,通過NavigateUrl屬性動(dòng)態(tài)修改目標(biāo)頁面。
為了實(shí)現(xiàn)動(dòng)態(tài)跳轉(zhuǎn)功能,ASP.NET還有很多控件都可以設(shè)置NavigateUrl屬性來實(shí)現(xiàn)頁面轉(zhuǎn)向功能。如:Treeview、Menu等。Button控件的PostBackUrl屬性也可以用來設(shè)置單擊Button按鈕時(shí)跳轉(zhuǎn)到其他的頁面。
1.2? ?Response對(duì)象
Response對(duì)象ASP.NET的一個(gè)內(nèi)置對(duì)象。它可以動(dòng)態(tài)地響應(yīng)客戶端的請(qǐng)求,并將動(dòng)態(tài)生成的響應(yīng)結(jié)果返回給客戶端瀏覽器[3]。
Response提供的Redirect()方法可以實(shí)現(xiàn)網(wǎng)頁重定向到指定的網(wǎng)頁,并可以通過參數(shù)向目標(biāo)頁面?zhèn)鬟f信息。調(diào)用格式是:Response.Redirect("目標(biāo)文件路徑[?參數(shù)列表]");,參數(shù)列表是可選的。如:Response.Redirect("~/pComment.aspx");可轉(zhuǎn)向到根目錄下的網(wǎng)頁pComment.aspx;需注意的是要跳轉(zhuǎn)到頁面資源在指定路徑下必須是存在的,否則會(huì)出錯(cuò)。執(zhí)行該代碼后生成的URl地址包括參數(shù)將出現(xiàn)在瀏覽器的地址欄中,因此一般傳遞非保護(hù)性的信息。
1.3? ?Server對(duì)象
Server對(duì)象提供對(duì)服務(wù)器訪問的方法和屬性,大多數(shù)方法和屬性是作為實(shí)用程序的功能提供的。Transfer方法可以終止當(dāng)前頁面的執(zhí)行,并開始執(zhí)行新的請(qǐng)求頁,新頁面仍使用前一頁面創(chuàng)建的應(yīng)答流,且瀏覽器的URL不發(fā)生改變。利用Execute方法使用另一頁執(zhí)行當(dāng)前請(qǐng)求。同樣可以實(shí)現(xiàn)頁面的跳轉(zhuǎn)。區(qū)別是Execute()方法執(zhí)行目標(biāo)路徑代碼后會(huì)返回原程序。
1.4? ?靜態(tài)頁面的Web表單
每個(gè)ASPX網(wǎng)頁都是一個(gè)Web表單(Form)。由于運(yùn)行機(jī)制不同,Web表單不支持HTML表單中的action和method屬性。但.net中創(chuàng)建的HTML仍可以使用。action用于指定提交到的頁面路徑,method表示傳遞信息的方式(get/post)。
2? ? ? 信息傳遞
2.1? ?URL地址傳參
2.1.1? ?傳參格式
在頁面路徑即URL地址中向目標(biāo)頁面?zhèn)鬟f參數(shù),使用'?'分隔頁面路徑和參數(shù),參數(shù)有多個(gè)時(shí)用'&'分隔,每個(gè)參數(shù)都采用'參數(shù)名=參數(shù)值'的形式。如:
Response.Redirect("index.aspx?name=flower&pwd;=rose");
指跳轉(zhuǎn)到index.aspx頁面的同時(shí)向它傳遞兩個(gè)參數(shù)name和pwd,值分別是flower和rose。
2.1.2? ?接收參數(shù)
Request對(duì)象封裝了客戶端請(qǐng)求的信息,功能是從客戶端接收信息。包括URL參數(shù)傳遞的信息,HTML表單提交的參數(shù),cookie及客戶端的IP等。
Request對(duì)象的QueryString可接收URL中的請(qǐng)求參數(shù),包括上面提到的超級(jí)鏈接目標(biāo)地址中傳遞的數(shù)據(jù)、get方法提交的數(shù)據(jù)和Redirect方法傳送的數(shù)據(jù)。它的調(diào)用格式是:Request.QueryString["參數(shù)名"];如:string str=Request.QueryString["name"].ToString();為接收URL中的參數(shù)name,并將值保存在變量str中。
2.2? ?傳遞用戶狀態(tài)信息
可以使用Cookie、Session和Application保存用戶狀態(tài)信息,在多個(gè)頁面共享,起到信息傳遞的作用,如用戶登錄狀態(tài)、購(gòu)物車的信息、網(wǎng)站當(dāng)前在線人數(shù)等。
2.2.1? ?Cookie
Cookie是保存在客戶端的加密文本,用來保存與Web站點(diǎn)關(guān)聯(lián)的有關(guān)訪問者的少量數(shù)據(jù)。用戶訪問網(wǎng)站時(shí),可以讀取Cookie包含的信息,如用戶的登錄信息。創(chuàng)建Cookie的代碼如下:HttpCookiemyCookie = new HttpCookie("userName");myCookie.Value="小甜餅";。
通過Request.Cookies.AllKeys或Request.Cookies["cookie "].Value;獲取Cookie值。
2.2.2? ?會(huì)話狀態(tài)
Session對(duì)象由服務(wù)器進(jìn)行管理,在服務(wù)器端存儲(chǔ)單個(gè)用戶會(huì)話相關(guān)的信息。會(huì)話結(jié)束后,Session即失去效用??捎糜诒4嬷卸唐诨蛎舾械臄?shù)據(jù),不宜保存大量數(shù)據(jù)。它比Cookie安全且無須實(shí)例化。
2.2.3? ?Application
Application在服務(wù)器上存儲(chǔ)易變的全局型變量。為多個(gè)用戶共享的信息。當(dāng)客戶第一次訪問某虛擬目錄的資源時(shí)被創(chuàng)建,退出應(yīng)用程序或關(guān)閉服務(wù)器時(shí)被撤銷。采用鍵值對(duì)的形式創(chuàng)建對(duì)象,為避免沖突調(diào)用Application對(duì)象時(shí)需要鎖定。
3? ? ? 電子商務(wù)網(wǎng)站中的頁面轉(zhuǎn)向和參數(shù)傳遞
電子商務(wù)網(wǎng)站開發(fā)中頁面轉(zhuǎn)向和參數(shù)傳遞頻頻出現(xiàn)(如圖1所示),而且與服務(wù)器控件和數(shù)據(jù)綁定技術(shù)配合使用。在頁面上顯示的超級(jí)鏈接多采用標(biāo)記。在電子商務(wù)網(wǎng)站中,商品信息來自于數(shù)據(jù)庫(kù),并且需要將部分信息設(shè)置為超級(jí)鏈接,此時(shí)顯示的鏈接文本和傳遞的參數(shù)是綁定數(shù)據(jù)源中的字段,如打開暢銷品列表中某商品詳情頁面的代碼:
實(shí)現(xiàn)了單擊商品名稱(字段Name的值)時(shí),從當(dāng)前頁面跳轉(zhuǎn)到ProductDetail.aspx,并將該商品的ID(ID字段的值)作為參數(shù)值。
網(wǎng)站根據(jù)用戶行為進(jìn)行跳轉(zhuǎn)和信息傳遞時(shí),無安全要求的信息如商品類別ID可以使用URL傳遞,以打開某類的商品信息。用戶的登錄狀態(tài)、用戶名需要在不同的頁面間傳遞,可以采用Session來實(shí)現(xiàn)。
購(gòu)物車信息需要在多個(gè)頁面間共享,主要保存商品信息包括商品名稱、購(gòu)買數(shù)量、購(gòu)買價(jià)格、折扣信息、顏色、尺碼等。通常用Session實(shí)現(xiàn)購(gòu)物車功能,session對(duì)象的值可以是簡(jiǎn)單類型,也可以是符合類型。商品信息屬于二維結(jié)構(gòu),可采用DataTable或ArrayList對(duì)象,以方便處理,再保存到Session中以實(shí)現(xiàn)頁面間共享的功能。語句Session[“SHOPPINTCART”] = shoppingCartList;將保存有購(gòu)物車信息的shoppingCartList保存到Session中,修改購(gòu)物車信息時(shí)使用語句shoppingCartList = (ArrayList)Session[“SHOPPINTCART”];將Session中的商品信息轉(zhuǎn)換為相應(yīng)的類型,如ArrayList,再通過shoppingCartList對(duì)象的方法修改購(gòu)物車中的商品信息。
4? ? ? 結(jié)? ? 語
頁面轉(zhuǎn)向和頁面間參數(shù)傳遞是網(wǎng)站開發(fā)中的重要技術(shù)。為靈活正確地采用相應(yīng)的方法,本文總結(jié)了Web開發(fā)中常用的頁面轉(zhuǎn)向和參數(shù)傳遞方法,并分析了每種方法的特點(diǎn)和適用情況。不同的頁面轉(zhuǎn)向和傳參方法,其外觀不同,具體功能有差異,對(duì)系統(tǒng)的穩(wěn)定性、安全性有影響,并以電子商務(wù)網(wǎng)站中典型的頁面轉(zhuǎn)向和傳參為例進(jìn)行了說明。
主要參考文獻(xiàn)
[1]周廣清,劉建平.ASP.NET頁面跳轉(zhuǎn)和參數(shù)傳遞[J].醫(yī)療衛(wèi)生裝備,2015,36(3):73-75.
[2]徐少華,張華偉,李浩.在ASP.NET中實(shí)現(xiàn)Web頁面值傳遞方法的比較[J].武漢理工大學(xué)學(xué)報(bào):信息與管理工程版,2006,28(6):37-40.
[3]程不攻,等.ASP.NET2.0動(dòng)態(tài)網(wǎng)站開發(fā)教程[M].北京:清華大學(xué)出版社,2008.