




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C#Web編程--內(nèi)置對象第一頁,共89頁。第5講內(nèi)部對象第二頁,共89頁。5.1ASP.NET內(nèi)部對象概述5.2Page對象5.3Request對象5.4Response對象5.5HttpCookie對象5.6Session對象5.7Application對象5.8Server對象5.9Mail對象5.10viewstate對象講解提綱第三頁,共89頁。利用Request對象的QueryString獲取方法獲取標(biāo)識在URL后面的信息
利用Request對象的ServerVariables獲取方法獲取客戶端IP地址等環(huán)境變量
利用Response對象的Write方法輸出信息及它的省略用法
掌握Response對象的Redirect方法
利用Response對象的Cookies方法設(shè)置Cookies的值,利用Request對象的Cookies獲取方法獲取Cookies的值。
利用Session對象保存信息
利用Application對象保存信息
掌握Server對象的的HTMLencode、Mappath和Execute方法掌握發(fā)送E-mail的一般方法
本章要點(diǎn)第四頁,共89頁。對象其實(shí)就是可以重用的代碼片斷,類是對象的定義,對象是類的實(shí)例。對象一般有屬性、方法、事件。ASP.NET能夠利用成千上萬的內(nèi)置對象。本質(zhì)上前面講的內(nèi)置函數(shù)、Web控件也都可以看作內(nèi)置對象,都是類實(shí)現(xiàn)的。本章就講解其中常用的幾個內(nèi)部對象,包括Page、Request、Response、HttpCookie、Session、Application、Server、Mail
5.1ASP.NET內(nèi)部對象概述
第五頁,共89頁。內(nèi)部對象和其它部分的關(guān)系內(nèi)部函數(shù).NET類庫服務(wù)器控件內(nèi)部對象第六頁,共89頁。由System.Web.UI.Page類實(shí)現(xiàn),命名空間System.Web.UI屬性:IsPostBackIsValid方法:DataBind(數(shù)據(jù)綁定)事件:
Load(頁面裝載)5.2Page對象第七頁,共89頁。IsPostBack示例5-1.aspx第八頁,共89頁。在第3章講解了如何獲取客戶填寫在表單中的信息,本節(jié)利用Request對象還可以獲取更多的信息。5.3Request對象第九頁,共89頁。由System.Web.HttpRequest類實(shí)現(xiàn)
命名空間:System.Web數(shù)據(jù)集合(獲取方法):QueryString、Form、Cookies、ServerVariables、ClientCertificate、Browser
方法:TotalBytes事件:BinaryRead5.3.1Request對象簡介
第十頁,共89頁。QueryString可以獲取標(biāo)識在URL后面的所有返回的變量及其值。例如,當(dāng)客戶端送出如下的請求時,QueryString將會得到name與age兩個變量的值。http://……/temp.aspx?name=白蕓&age=22后面可以有多個變量參數(shù),參數(shù)之間用&連接。5.3.2使用QueryString數(shù)據(jù)集合
第十一頁,共89頁。QueryString數(shù)據(jù)集合示例(1)4-2.aspx第十二頁,共89頁。QueryString數(shù)據(jù)集合示例(2)4-3.aspx第十三頁,共89頁。利用Request對象的ServerVariables數(shù)據(jù)集合可以方便地取得服務(wù)器端或客戶端的環(huán)境變量信息,比如客戶端的IP地址等等。語法:Request.ServerVariables("環(huán)境變量名稱")5.3.3ServerVariables數(shù)據(jù)集合
第十四頁,共89頁。ServerVariables示例4-4.aspx第十五頁,共89頁。如果客戶端瀏覽器支持SSL3.0或PCT1協(xié)議,可以利用ClientCertificate數(shù)據(jù)集合取回客戶端瀏覽器的身份驗證信息。語法如下:Request.ClientCertificate(關(guān)鍵字)如果客戶端瀏覽器未送出身份驗證信息,或服務(wù)器端也未設(shè)置向客戶端瀏覽器要求身份驗證的命令,那么將返回空值。如果有,將返回相應(yīng)的身份驗證信息。5.3.4ClientCertificate數(shù)據(jù)集合
第十六頁,共89頁。Request對象的Browser數(shù)據(jù)集合就可以方便地獲取客戶端瀏覽器特性,如類型、版本、是否支持背景音樂等。語法:Request.Browser("瀏覽器特性名稱")4.3.5Browser數(shù)據(jù)集合
第十七頁,共89頁。Browser示例4-5.aspx第十八頁,共89頁。利用該屬性可以得到客戶端提交數(shù)據(jù)的字節(jié)大小,語法如下:Request.TotalBytes5.3.6TotalBytes屬性
第十九頁,共89頁。前面講的5種獲取方法都是直接獲取數(shù)據(jù),而此方法可以二進(jìn)制方式獲取客戶端用Post方法提交的數(shù)據(jù)。語法如下:Request.BinaryRead(字節(jié)大小)
說明:其中字節(jié)大小是用TotalBytes屬性獲得的響應(yīng)數(shù)據(jù)的字節(jié)大小。
4.3.7BinaryRead方法
第二十頁,共89頁。在第3章中講過利用Label標(biāo)簽控件向客戶端輸出信息。其實(shí),也可以利用Response對象向客戶端輸出信息。而且,Response對象還有一些特殊功能,如重定向等。
(注意,在ASP.NET中提倡利用控件輸出信息。)5.4Response對象第二十一頁,共89頁。由System.Web.HttpResponse類實(shí)現(xiàn)
命名空間:System.Web屬性:Buffer、ContentType
方法:Write、Redirect、End、Clear、Flush、BinaryWrite5.4.1Response對象簡介
第二十二頁,共89頁。利用該方法就可以在客戶端輸出信息,效果和利用Label標(biāo)簽控件一樣。語法:Response.Write(變量數(shù)據(jù)或字符串)例如:Response.Write(user_name&"您好") 'user_name是一個變量,表示用戶名Response.Write("現(xiàn)在是:"&now())'now()是時間函數(shù)Response.Write("業(yè)精于勤而荒于嬉<p>")'輸出字符串5.4.2利用Write方法輸出信息
第二十三頁,共89頁。Write方法示例4-6.aspx第二十四頁,共89頁。利用該方法還可以直接在HTML代碼中動態(tài)輸出信息,此時需要將語句用<%和%>括起來,例如:<h4align="center">Write方法示例</h4><%Response.Write("您好,歡迎光臨")Response.Write("<p>敬請?zhí)岢鰧氋F意見")%>此時,它還有一種省略方式,例如:<h4align="center">Write方法示例</h4><%="您好,歡迎光臨"%><%="<p>敬請?zhí)岢鰧氋F意見"%>Write方法的其它方式第二十五頁,共89頁。使用Redirect方法就可以引導(dǎo)客戶至另一個頁面。語法如下:Response.Redirect(網(wǎng)址變量或字符串)例如:Response.Redirect("")'引導(dǎo)至中國教育網(wǎng)Response.Redirect("other.asp")'引導(dǎo)至站內(nèi)其他網(wǎng)頁theURL=""Response.Redirect(theURL)'引導(dǎo)至變量表示的網(wǎng)址5.4.3使用Redirect方法引導(dǎo)客戶端至另一個URL位置
第二十六頁,共89頁。Redirect方法示例4-7.aspx第二十七頁,共89頁。5.4.4使用End方法終止ASP.NET程序
Test5_1.aspx第二十八頁,共89頁。Buffer屬性用來設(shè)置服務(wù)器端是否將頁面先輸出到緩沖區(qū)。它的取值為True或False,默認(rèn)為True。語法:Response.Buffer=True|False使用Response.redirect時必須保證Buffer值為True。5.4.5關(guān)于Buffer屬性
第二十九頁,共89頁。該方法用于輸出二進(jìn)制信息,它不進(jìn)行任何字符轉(zhuǎn)換,直接輸出。其語法為:Response.BinaryWrite(變量或字符串)有時侯可能在數(shù)據(jù)庫里保存了二進(jìn)制信息,就可以用該方法輸出了。例如:從數(shù)據(jù)庫中顯示圖片的信息就要用到該方法。
5.4.6BinaryWrite方法
第三十頁,共89頁。很多網(wǎng)站能夠記住客戶端的訪問次數(shù)。要記住訪問次數(shù)可以采取多種方法,其中利用Cookie是一種可以在客戶端保存信息的方法。ASP.NET提供了HttpCookie對象來處理Cookie,該對象是由System.Web.HttpCookie類實(shí)現(xiàn)的。
5.5HttpCookie對象
第三十一頁,共89頁。Cookie俗稱甜餅,可以在客戶端長期保存信息。它是服務(wù)器端發(fā)送到客戶端瀏覽器的文本串句柄,保存在客戶的硬盤上。HttpCookie對象其實(shí)是:利用Response對象的Cookies方法設(shè)置Cookies;利用Request對象的Cookies獲取方法來獲取Cookies的值。5.5.1什么是Cookie
第三十二頁,共89頁。語法如下:Response.Cookies(“CookiesName”)[(關(guān)鍵字)|.屬性]=字符串(1)設(shè)置不含關(guān)鍵字的CookieResponse.Cookies("user_name").Value="高航"(2)設(shè)置含關(guān)鍵字的CookieResponse.Cookies("user")("name")="高航"Response.Cookies("user")("age")=22(3)設(shè)置Cookie的有效期Response.Cookies("user_name").Expires=#1/1/2008#5.5.2使用Response對象設(shè)置Cookie
第三十三頁,共89頁。語法如下:Request.Cookies(“CookiesName”)[(關(guān)鍵字)|.屬性](1)省略關(guān)鍵字的用法user_name=Request.Cookies("user_name").Value (2)有關(guān)鍵字的用法user_name=Request.Cookies("user")("name") age=Request.Cookies("user")("age")(3)判斷Cookies關(guān)鍵字?jǐn)?shù)目result=Request.Cookies("CookiesName").Haskeys5.5.3使用Request對象讀取Cookie
第三十四頁,共89頁。5.5.4Cookie綜合示例
4-8.aspx第三十五頁,共89頁。利用Session對象可以方便記錄客戶的信息。5.6Session對象
第三十六頁,共89頁。由System.Web.SessionState類實(shí)現(xiàn)
命名空間System.Web屬性SessionID、TimeOut方法Abandon事件Session_OnStartSession_OnEnd5.6.1Session對象簡介
第三十七頁,共89頁。5.6.2利用Session存儲信息
4-10.aspx4-9.aspx第三十八頁,共89頁。5.6.3利用Session存儲數(shù)組信息
4-12.aspx4-11.aspx第三十九頁,共89頁。Session對象有它的有效期,默認(rèn)為20分鐘??蛻舳嗣啃麓蜷_一個瀏覽器窗口,就會創(chuàng)建一個Session對象,如果超出20分鐘沒有和服務(wù)器端交互或者關(guān)閉了瀏覽器,則該Session對象就會自動結(jié)束。修改有效期語法如下:Session.Timeout=整數(shù)(分鐘)例如:Session.Timeout=90'將有效期改為90分鐘5.6.4Timeout屬性
第四十頁,共89頁。Session對象到期后會自動清除,但到期前可以用Abandon方法強(qiáng)行清除。語法:
Session.Abandon例如:
Session("user_name")="萌萌"
Session.Abandon Response.Write(Session("user_name"))說明:先將前兩句復(fù)制到一個文件中執(zhí)行,然后再將第3句復(fù)制到另一個ASP.NET文件中執(zhí)行。
5.6.5Abandon方法
第四十一頁,共89頁。Session對象可以記載特定客戶的信息,與此相反的是,Application對象可以記載所有客戶信息。簡而言之,不同的客戶必須訪問不同的Session對象,但可以訪問公共的Application對象。它的最典型的應(yīng)用是聊天室。5.7Application對象
第四十二頁,共89頁。由System.Web.HttpApplication類實(shí)現(xiàn)
方法:Lock
Unlock
事件:Application_OnStartApplication_OnEnd
5.7.1Application對象簡介
第四十三頁,共89頁。語法:Application("Application名字")=變量、常量、字符串信息或表達(dá)式例如:Application.LockApplication("user_num")=user_numApplication(“city”)=“南京”
Application.Unlock5.7.2利用Application存儲信息
第四十四頁,共89頁。這是一個簡單的聊天室,共分3個文件5-13.asp框架頁文件(省略不講)5-14.asp保存發(fā)言信息5-15.asp讀取發(fā)言信息Application示例第四十五頁,共89頁。5-14.asp保存發(fā)言信息5-14.aspx第四十六頁,共89頁。5-15.asp讀取發(fā)言信息4-15.aspx第四十七頁,共89頁。和Session非常類似。存儲:Dimuser_name(2)AsStringuser_name(0)="白蕓"user_name(1)="海霞"Application.LockApplication("arry_user_name")=user_nameApplication.Unlock讀取:Dimuser_name()AsString user_name=Application("arry_user_name")message.text=user_name(0)&"您好<p>"&user_name(1)&"您好"5.7.3利用Application存儲數(shù)組信息
第四十八頁,共89頁。Server對象是專為處理服務(wù)器上的特定任務(wù)而設(shè)計的,特別是與服務(wù)器的環(huán)境和處理活動有關(guān)的任務(wù)。5.8Server對象
第四十九頁,共89頁。由System.Web.HttpServerUtility類實(shí)現(xiàn)命名空間:System.Web類:
屬性:ScriptTimeout方法:Execute、TransferHtmlEncode、UrlEncodeCreatObject5.8.1Server對象簡介
第五十頁,共89頁。該屬性用來規(guī)定腳本文件執(zhí)行的最長時間,默認(rèn)為90秒。主要是用來防止某些可能進(jìn)入死循環(huán)的錯誤導(dǎo)致服務(wù)器過載問題。修改方法如下:Server.ScriptTimeout=3004.8.2ScriptTimeout屬性
第五十一頁,共89頁。該方法可以用于創(chuàng)建組件、應(yīng)用對象或腳本對象的實(shí)例。語法如下:Server.CreateObject(ActiveXServer組件)5.8.3CreateObject方法
第五十二頁,共89頁。5.8.4HTMLEncode方法
4-16.aspx第五十三頁,共89頁。該方法用來轉(zhuǎn)化字符串為URL編碼。例子:Server.URLEncode(“ab”)
結(jié)果:a+b5.8.5URLEncode方法
第五十四頁,共89頁。可以將虛擬路徑轉(zhuǎn)化為物理路徑。
5.8.6MapPath方法
4-17.aspx第五十五頁,共89頁。該方法用來停止執(zhí)行當(dāng)前網(wǎng)頁,轉(zhuǎn)到新的網(wǎng)頁執(zhí)行,執(zhí)行完畢后返回原網(wǎng)頁,繼續(xù)執(zhí)行Execute方法后面的語句。語法如下:Server.Execute(變量或字符串)該方法和Redirect方法的區(qū)別。(1)Redirect語句盡管是在服務(wù)器端運(yùn)行,但重定向?qū)嶋H發(fā)生在客戶端,而Execute方法的重定向?qū)嶋H發(fā)生在服務(wù)器端。(2)Redirect語句執(zhí)行完新的網(wǎng)頁后,并不返回原網(wǎng)頁,而Execute方法卻返回原頁面,繼續(xù)執(zhí)行下面的語句。(3)Redirect語句并不能把一些環(huán)境變量傳遞過去,而Execute方法卻可以。(4)Redirect方法可以轉(zhuǎn)向一個網(wǎng)頁和其他網(wǎng)站,而Execute方法一般只能轉(zhuǎn)到同一個應(yīng)用程序的其他文件。5.8.7Execute方法
第五十六頁,共89頁。該方法和Execute方法非常相似,惟一的區(qū)別是執(zhí)行完新的網(wǎng)頁后,并不返回原網(wǎng)頁,而是停止執(zhí)行過程。語法如下:Server.Transfer(變量或字符串)
5.8.8Transfer方法
第五十七頁,共89頁。Execute方法示例4-18.aspx4-19.aspx運(yùn)行結(jié)果第五十八頁,共89頁。利用該對象可以在線發(fā)送E-mail。5.9Mail對象
第五十九頁,共89頁。Mail對象由System.Web.Mail類庫實(shí)現(xiàn),它其實(shí)是由MailMessage、MailAttachment、SmtpMail三個類組成的。MailMessage類用來設(shè)置E-mail的內(nèi)容,如發(fā)信人地址、收信人地址等。
MailAttachment類用來添加附件。SmtpMail類用來發(fā)送信件。5.9.1Mail對象簡介
第六十頁,共89頁。最簡單的發(fā)送方式:SubPage_Load(SenderAsObject,EAsEventArgs) SmtpMail.Send("","","您好","祝一切順利")EndSub說明:此時使用本機(jī)的發(fā)信服務(wù)器,要求在IIS中啟動SMTP服務(wù)。5.9.2發(fā)送E-mail示例(1)第六十一頁,共89頁。5.9.2發(fā)送E-mail示例(2)4-20.aspx第六十二頁,共89頁。下面的示例比較完整,客戶可以利用表單輸入信件內(nèi)容,并可以選擇客戶端的文件作為附件發(fā)出。要注意,如果發(fā)送客戶端的文件,首先要將該文件上傳到服務(wù)器端,然后再發(fā)送。
5.9.3發(fā)送E-mail示例二第六十三頁,共89頁。發(fā)送E-mail表單部分4-21.aspx第六十四頁,共89頁。發(fā)送E-mail程序代碼部分4-21.aspx第六十五頁,共89頁。ViewState是服務(wù)器控件狀態(tài)保存的基礎(chǔ),它是一個Hidden字段,用IE查看Html源碼,找到一個名為"__VIEWSTATE"的Hidden字段,其中有一大堆亂七八糟的字符,這就是頁面的ViewState。ViewState是ASP.NET中用來保存WEB控件回傳時狀態(tài)值一種機(jī)制.在WEB窗體(FORM)的設(shè)置為runat=“server”,這個窗體(FORM)會被附加一個隱藏的屬性_VIEWSTATE。_VIEWSTATE中存放了所有控件在ViewState中的狀態(tài)值.ViewState是類Control中的一個域,其他所有控件通過繼承Control來獲得了ViewState功能.它的類型是system.Web.UI.StateBag,一個名稱/值的對象集合當(dāng)請求某個頁面時,ASP.NET把所有控件的狀態(tài)序列化成一個字符串,然后做為窗體的隱藏屬性送到客戶端.當(dāng)客戶端把頁面回傳時,ASP.NET分析回傳的窗體屬性,并賦給控件對應(yīng)的值.當(dāng)然這些全部是由ASP.NET負(fù)責(zé)的.
5.10ViewState第六十六頁,共89頁。如果要使用ViewState,則在ASPX頁面中必須有一個服務(wù)器端窗體標(biāo)記(<formrunat=server>).窗體字段是必需的,這樣包含ViewState信息的隱藏字段才能回傳給服務(wù)器.而且,該窗體還必須是服務(wù)器端的窗體,這樣在服務(wù)器上執(zhí)行該頁面時,ASP.NET頁面框架才能添加隱藏的字段.Page的EnableViewState屬性值為true.控件的EnableViewState屬性值為true.使用ViewState的條件第六十七頁,共89頁。1.當(dāng)存在頁面回傳時,不需要維持控件的值就要把ViewState禁止.2.ViewState的索引是大小寫敏感的.3.ViewState不是跨頁面的.4.為了能保存在ViewState中,對象必須是可流化或者定義了TypeConverter.5.控件TextBox的TextMode屬性設(shè)置為Password時,它的狀態(tài)將不會被保存在ViewState中,這應(yīng)該是出于安全性的考慮.6.在頁面沒有回傳或重定向或在回傳中轉(zhuǎn)到(transfer)其他頁面時不要使用ViewState.7.在動態(tài)建立控件時要小心它的ViewState.8.當(dāng)禁止一個程序的ViewState時,這個程序的所有頁面的ViewState也被禁止了.9.只有當(dāng)頁面回傳自身時ViewState才是持續(xù)的.設(shè)置ViewStateViewState可以在控件,頁,程序,全局配置中設(shè)置.缺省情況下EnableViewState為true.如果要禁止所有頁面ViewState功能,可以在程序配置中把EnableViewState設(shè)為false.使用ViewState注意的問題第六十八頁,共89頁。HTML標(biāo)簽
<ahref=”test.aspx”>測試頁</a>2.HyperLink控件
這是最常見的一種轉(zhuǎn)向方法;
1)A服務(wù)器端控件屬性NavigateUrl指定要跳轉(zhuǎn)到的Url地址
2)NavigateUrl是可以在服務(wù)器端使用代碼修改,這個區(qū)別于<a>
3)由于HyperLink本身沒有事件所以要在服務(wù)器端其它事件中設(shè)置NavigateUrl
4)代碼示例
<Asp:HyperLinkid=”hyperlink”runat=”server”NavigateUrl=”test.aspx”>ok</Asp:HyperLink>
5.11頁面跳轉(zhuǎn)方法第六十九頁,共89頁。3.Response.Redirect()方法
1)過程:發(fā)送一個Http響應(yīng)到客戶端,通知客戶端跳轉(zhuǎn)到一個新的頁面,然后客戶端再發(fā)送跳轉(zhuǎn)請求到服務(wù)器端。
2)頁面跳轉(zhuǎn)之后內(nèi)部控件保存的所有信息丟失,當(dāng)A跳轉(zhuǎn)到B,B頁面將不能訪問A頁面提交的數(shù)據(jù)信息。
3)使用這個方法使用這個方法跳轉(zhuǎn)后瀏覽器地址欄的Url信息改變
4)可以使用SessionCookiesApplication等對象進(jìn)行頁面間的數(shù)據(jù)傳遞
5)重定向操作發(fā)生在客戶端,總共涉及到兩次與Web服務(wù)器的通信:一次是對原始頁面的請求,另一次是重定向新頁面的請求這個跳轉(zhuǎn)頁面的方法跳轉(zhuǎn)的速度不快,因為它要走2個來回(2次postback),但他可以跳轉(zhuǎn)到任何頁面,沒有站點(diǎn)頁面限制(即可以由雅虎跳到新浪),同時不能跳過登錄保護(hù)
5.11頁面跳轉(zhuǎn)方法第七十頁,共89頁。4.Server.Transfer()方法
1)實(shí)現(xiàn)頁面跳轉(zhuǎn)的同時將頁面的控制權(quán)進(jìn)行移交
2)頁面跳轉(zhuǎn)過程中RequestSession等保存的信息不變,跳轉(zhuǎn)之后可以使用上一個頁面提交的數(shù)據(jù)
3)跳轉(zhuǎn)之后瀏覽器地址欄的Url不變
4)這種方法的重定向請求是在服務(wù)器端的進(jìn)行的,瀏覽器不知道頁面已經(jīng)發(fā)生了一次跳轉(zhuǎn)速度快,只需要一次postback,但是它必須是在同一個站點(diǎn)下,因為它是server的一個方法。另外,他能跳過登錄保護(hù)。
5.11頁面跳轉(zhuǎn)方法第七十一頁,共89頁。5.Server.Execute()方法
1)該方法允許當(dāng)前頁面執(zhí)行同一個Web服務(wù)器上的另一個頁面
2)頁面執(zhí)行完畢之后重新回到原始頁面發(fā)出Server.Execute()的位置。
3)這種方式類似針對頁面的一次函數(shù)調(diào)用,被請求的頁面可以使用原始頁面的表單數(shù)據(jù)和查詢字符串集合
4)被調(diào)用頁面的Page指令的EnableViewStateMac屬性設(shè)置為False
5.11頁面跳轉(zhuǎn)方法第七十二頁,共89頁。6.Javascript實(shí)現(xiàn)跳轉(zhuǎn)<scriptlanguage="javascript"type="text/javascript">//以下方式直接跳轉(zhuǎn)window.location.href='hello.html';
//以下方式定時跳轉(zhuǎn)setTimeout("javascript:location.href='hello.html'",5000);</script>5.11頁面跳轉(zhuǎn)方法第七十三頁,共89頁。7.新頁面顯示1)Respose.Write("<script
language='javascript'>window.open('"+
url
+"');</script>");2)
<asp:HyperLink
id=“HyperLink1”
runat=“server”
Target=“_blank”
NavigateUrl=“new.aspx”>打開</asp:HyperLink>
3)
<a
href="new.asp"
Target="_blank"
>打開</a>
privatevoidbutton1_Click(objectsender,EventArgse){FrmRemoteVMfa=newFrmRemoteVM();fa.Show();
}5.11頁面跳轉(zhuǎn)方法第七十四頁,共89頁。當(dāng)需要把用戶跳轉(zhuǎn)到另一臺服務(wù)器上的頁面的時候使用redirect
·當(dāng)需要把用戶跳轉(zhuǎn)到非aspx頁面時候,如html使用redirect
·需要把查詢字符串作為url一部分的時候保留傳給服務(wù)器的時候,因為其他2種方法不能做到2次postback,把數(shù)據(jù)先帶回服務(wù)器使用redirect
·需要aspx頁面間的轉(zhuǎn)換(不涉及登錄)使用transfer
·當(dāng)需要把a(bǔ)spx頁面的輸出結(jié)果插入到另一個aspx頁面的時候使用execute方法。
·如果要讓用戶來決定何時轉(zhuǎn)換頁面以及轉(zhuǎn)到哪一個頁面,超級鏈接最適合。
·如果要用程序來控制轉(zhuǎn)換的目標(biāo),但轉(zhuǎn)換的時機(jī)由用戶決定,使用Web服務(wù)器的HyperLink控件,動態(tài)設(shè)置其NavigateUrl屬性。
·如果要把用戶連接到另一臺服務(wù)器上的資源,使用Response.Redirect。
·如果要將查詢字符串作為URL的一部分保留,使用Response.Redirect。
·如果要將執(zhí)行流程轉(zhuǎn)入同一Web服務(wù)器的另一個ASPX頁面,應(yīng)當(dāng)使用Server.Transfer而不是Response.Redirect,因為Server.Transfer能夠避免不必要的網(wǎng)絡(luò)通信,從而獲得更好的性能和瀏覽效果。
·如果要捕獲一個ASPX頁面的輸出結(jié)果,然后將結(jié)果插入另一個ASPX頁面的特定位置,則使用Server.Execute。
·如果要確保HTML輸出合法,請使用Response.Redirect,不要使用Server.Transfer或Server.Execute方法。頁面跳轉(zhuǎn)小結(jié)第七十五頁,共89頁。因為ASP.NET的頁面表單提交到自身,完成回傳的功能,所以默認(rèn)情況下不能使用POST方式進(jìn)行多頁面?zhèn)髦?.URL傳值
這是經(jīng)典的傳值方式,這種方法的使用非常簡單,不過所傳遞的值是會顯示在瀏覽器的地址欄上的,而且不能傳遞對象。所以這種方法一般用于傳遞的值少且安全性要求不高的情況下。在*.aspx頁面開發(fā)中可以使用超級鏈接文本進(jìn)行傳值,如以下代碼所示。
<asp:HyperLinkrunat="server"ID="HpLink"
NavigateUrl="~/GetValues.aspx?urlvalue1=intel&urlvalue2=amd">URL傳值</asp:HyperLink>
以上鏈接文本將頁面跳轉(zhuǎn)到GetValues.aspx頁面,并且通過URL傳遞urlvalue1變量和urlvalue2變量,其值分別為intel和amd。在*.cs的服務(wù)器端方法中也可以調(diào)用HttpResponse對象的Redirect方法,將瀏覽器端重定向到新頁面并通過URL傳值,如以下代碼所示。
Response.Redirect(“~/GetValues.aspx?urlvalue1=intel&urlvalue2=amd”);
5.12頁面之間數(shù)據(jù)傳遞第七十六頁,共89頁。2.Session傳值這種方法將每份數(shù)據(jù)存儲于服務(wù)器變量中,可以傳遞比較多的數(shù)據(jù),并且安全性較高,所以常用于用戶身份的驗證功能中。不過,Session變量如果存儲過多的數(shù)據(jù)會消耗過多的服務(wù)器資源。其使用方法如以下代碼所示。
Session["SessionValue"]=“ATI”;
//也可以用索引存儲
Session[0]=“ATI”;
//在其他頁面的服務(wù)器端方法中取值方式為:
stringstr=Session["SessionValue"].ToString();
//也可以用索引獲取
stringstr=Session[0].ToString();
Session的可在應(yīng)用程序的多個頁面中以名稱/值對的方式共享,直到瀏覽用戶關(guān)閉自己的瀏覽器或者服務(wù)器Session超時(可設(shè)置,默認(rèn)為20分鐘)。
5.12頁面之間數(shù)據(jù)傳遞第七十七頁,共89頁。3.Cookie傳值Cookie是一種比較特殊的數(shù)據(jù)存儲方式,它以文本文件的形式存在于瀏覽用戶的磁盤中。很多登錄系統(tǒng)就是利用Cookie實(shí)現(xiàn)用戶自動登錄。即用戶登錄一次的登錄信息將被寫入到用戶電腦的Cookie文件中,下次登錄時,網(wǎng)站自動讀取該Cookie完成身份驗證。通過Cookie傳遞數(shù)據(jù)雖然很方便,保存時間可以自由設(shè)置,但是安全性不高。
ASP.NET中操作Cookie的主要類型位于System.Web命名空間下,分別為HttpCookie、HttpResponse以及HttpRequest。HttpCookie可建立和操作獨(dú)立Cookie的安全類型,訪問HttpResponse和HttpRequest的Cookies屬性可以獲取HttpCookieCollection集合對象,以讀取或添加HttpCookie對象。添加Cookie的方法如以下代碼所示。
5.12頁面之間數(shù)據(jù)傳遞第七十八頁,共89頁。//創(chuàng)建一個HttpCookie對象,向構(gòu)造函數(shù)傳遞名稱值
HttpCookieck=newHttpCookie("CookieValue");
//設(shè)置ck的“Value”屬性(值)
ck.Value=“Cookie值”;
//設(shè)置ck的過期時間為當(dāng)前時間加上360s,即6分鐘后失效
ck.Expires=DateTime.Now.AddSeconds(360);
//設(shè)置ck有效范圍(域限制)
ck.Domain="";
//將ck添加至HttpCookieCollection對象
Response.Cookies.Add(ck);
//也可為以下方法添加
//Response.AppendCookie(ck);;
5.12頁面之間數(shù)據(jù)傳遞第七十九頁,共89頁。讀取用戶的Cookie則更為簡單,只需根據(jù)名稱讀取HttpCookieCollection集合對象中的子項即可,如以下代碼所示。
stringstr=Request.Cookies["CookieValue"].Value;
除此之外,還可以利用一個HttpCookie存儲多個名稱/值對形式的Cookie信息,如以下代碼所示。
HttpCookieck=newHttpCookie("CookieValue");
//以名稱/值對的方式添加多個Cookie信息
ck.Values.Add("value1",“one”);
ck.Values.Add("value2","two");
讀取這些Cookie如以下代碼所示。
stringstr="值1:"+Request.Cookies["CookieValue"].Values["value1"];
str+="值2:"+Request.Cookies["CookieValue"].Values["value2"];
5.12頁面之間數(shù)據(jù)傳遞第八十頁,共89頁。說明:多數(shù)瀏覽器支持最多可達(dá)4096字節(jié)的Cookie,如果要將為數(shù)不多的幾個值保存到用戶計算機(jī)上,瀏覽器還限制了每個站點(diǎn)可以在用戶計算機(jī)上保存的Cookie數(shù)量。大多數(shù)瀏覽器只允許每個站點(diǎn)保存20個Cookie。如果試圖保存更多的Cookie,則最先保存的Cookie就會被刪除。還有些瀏覽器會對來自所有站點(diǎn)的Cookie總數(shù)作出限制,這個限制通常為300個。用戶可以設(shè)置自己的瀏覽器,拒絕接受Cookie,這種情況下只能結(jié)合其他的數(shù)據(jù)存儲方式。
5.12頁面之間數(shù)據(jù)傳遞第八十一頁
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 圖書館管理計劃
- 胸痹針灸治療
- 看的技巧之預(yù)測顧客的需求
- 統(tǒng)編版小學(xué)語文二年級下冊第24課《當(dāng)世界年紀(jì)還小的時候》精美課件
- 第14課 海峽兩岸的交往 教學(xué)設(shè)計-2023-2024學(xué)年浙江省部編版歷史與社會八年級下冊
- 財務(wù)報表知識培訓(xùn)課件
- 第六單元 中華民族的抗日戰(zhàn)爭 大單元教學(xué)設(shè)計 2023-2024學(xué)年部編版八年級歷史上學(xué)期
- 第四單元小數(shù)的意義和性質(zhì)(教學(xué)設(shè)計)-2023-2024學(xué)年四年級下冊數(shù)學(xué)人教版
- 2025年迪慶道路運(yùn)輸從業(yè)資格考試系統(tǒng)
- 2025年周口貨運(yùn)從業(yè)資格證考試題及答案
- 主要河流南、北方河流的不同特征主要湖泊
- 行進(jìn)間接單手低手投籃說課稿
- 寺院管理框架結(jié)構(gòu)圖PPT課件
- 單考單招數(shù)學(xué)公式總結(jié)
- 三打白骨精英文話劇劇本(原創(chuàng))
- 2019第五版新版PFMEA 注塑實(shí)例
- 李雁鳴循環(huán)理論
- 釩電池項目財務(wù)數(shù)據(jù)分析(范文模板)
- 電暈水測試液配方
- 日處理300t鮮奶的脫脂奶粉生產(chǎn)車間
- 工業(yè)鍋爐水處理系統(tǒng)調(diào)試報告
評論
0/150
提交評論