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