C# Web編程--內(nèi)置對(duì)象_第1頁(yè)
C# Web編程--內(nèi)置對(duì)象_第2頁(yè)
C# Web編程--內(nèi)置對(duì)象_第3頁(yè)
C# Web編程--內(nèi)置對(duì)象_第4頁(yè)
C# Web編程--內(nèi)置對(duì)象_第5頁(yè)
已閱讀5頁(yè),還剩84頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、C# Web編程5.1 ASP.NET內(nèi)部對(duì)象概述5.2 Page對(duì)象5.3 Request對(duì)象5.4 Response對(duì)象5.5 HttpCookie對(duì)象5.6 Session對(duì)象 5.7 Application對(duì)象5.8 Server對(duì)象5.9 Mail對(duì)象5.10 viewstate對(duì)象利用Request對(duì)象的QueryString獲取方法獲取標(biāo)識(shí)在URL后面的信息 利用Request對(duì)象的ServerVariables獲取方法獲取客戶端IP地址等環(huán)境變量 利用Response對(duì)象的Write方法輸出信息及它的省略用法 掌握Response對(duì)象的Redirect方法 利用Response

2、對(duì)象的Cookies方法設(shè)置Cookies的值,利用Request對(duì)象的Cookies獲取方法獲取Cookies的值。 利用Session對(duì)象保存信息 利用Application對(duì)象保存信息 掌握Server對(duì)象的的HTMLencode、Mappath和Execute方法掌握發(fā)送E-mail的一般方法 對(duì)象其實(shí)就是可以重用的代碼片斷,類是對(duì)象的定義,對(duì)象是類的實(shí)例。對(duì)象一般有屬性、方法、事件。ASP.NET能夠利用成千上萬(wàn)的內(nèi)置對(duì)象。本質(zhì)上前面講的內(nèi)置函數(shù)、Web控件也都可以看作內(nèi)置對(duì)象,都是類實(shí)現(xiàn)的。本章就講解其中常用的幾個(gè)內(nèi)部對(duì)象,包括Page、Request、Response、HttpC

3、ookie、Session、Application、Server、Mail 內(nèi)部函數(shù)內(nèi)部函數(shù).NET類庫(kù)類庫(kù)服務(wù)器控件服務(wù)器控件內(nèi)部對(duì)象內(nèi)部對(duì)象由System.Web.UI.Page類實(shí)現(xiàn),命名空間System.Web.UI 屬性: IsPostBack IsValid方法: DataBind(數(shù)據(jù)綁定)事件: Load (頁(yè)面裝載)5-1.aspx在第3章講解了如何獲取客戶填寫在表單中的信息,本節(jié)利用Request對(duì)象還可以獲取更多的信息。由System.Web.HttpRequest類實(shí)現(xiàn) 命名空間: System.Web數(shù)據(jù)集合(獲取方法): QueryString、Form、Cooki

4、es、ServerVariables、ClientCertificate、Browser 方法: TotalBytes事件: BinaryReadQueryString可以獲取標(biāo)識(shí)在URL后面的所有返回的變量及其值。例如,當(dāng)客戶端送出如下的請(qǐng)求時(shí),QueryString將會(huì)得到name與age兩個(gè)變量的值。 http:/temp.aspx?name=白蕓&age=22后面可以有多個(gè)變量參數(shù),參數(shù)之間用&連接。4-2.aspx4-3.aspx利用Request對(duì)象的ServerVariables數(shù)據(jù)集合可以方便地取得服務(wù)器端或客戶端的環(huán)境變量信息,比如客戶端的IP地址等等。語(yǔ)法:

5、 Request.ServerVariables(環(huán)境變量名稱)4-4.aspx如果客戶端瀏覽器支持SSL3.0或PCT1協(xié)議,可以利用ClientCertificate數(shù)據(jù)集合取回客戶端瀏覽器的身份驗(yàn)證信息。語(yǔ)法如下: Request.ClientCertificate(關(guān)鍵字)如果客戶端瀏覽器未送出身份驗(yàn)證信息,或服務(wù)器端也未設(shè)置向客戶端瀏覽器要求身份驗(yàn)證的命令,那么將返回空值。如果有,將返回相應(yīng)的身份驗(yàn)證信息。Request對(duì)象的Browser數(shù)據(jù)集合就可以方便地獲取客戶端瀏覽器特性,如類型、版本、是否支持背景音樂(lè)等。語(yǔ)法: Request.Browser (瀏覽器特性名稱)4-5.as

6、px利用該屬性可以得到客戶端提交數(shù)據(jù)的字節(jié)大小,語(yǔ)法如下: Request.TotalBytes前面講的5種獲取方法都是直接獲取數(shù)據(jù),而此方法可以二進(jìn)制方式獲取客戶端用Post方法提交的數(shù)據(jù)。語(yǔ)法如下: Request.BinaryRead(字節(jié)大小) 說(shuō)明:其中字節(jié)大小是用TotalBytes屬性獲得的響應(yīng)數(shù)據(jù)的字節(jié)大小。 在第3章中講過(guò)利用Label標(biāo)簽控件向客戶端輸出信息。其實(shí),也可以利用Response對(duì)象向客戶端輸出信息。而且,Response對(duì)象還有一些特殊功能,如重定向等。 (注意,在ASP.NET中提倡利用控件輸出信息。)由System.Web.HttpResponse類實(shí)現(xiàn)

7、命名空間: System.Web屬性: Buffer、ContentType 方法: Write、Redirect、End、Clear、Flush、BinaryWrite利用該方法就可以在客戶端輸出信息,效果和利用Label標(biāo)簽控件一樣。語(yǔ)法: Response.Write(變量數(shù)據(jù)或字符串)例如: Response.Write(user_name &您好) user_name是一個(gè)變量,表示用戶名 Response.Write(現(xiàn)在是: & now() ) now()是時(shí)間函數(shù) Response.Write(業(yè)精于勤而荒于嬉) 輸出字符串4-6.aspx利用該方法還可以直接在

8、HTML代碼中動(dòng)態(tài)輸出信息,此時(shí)需要將語(yǔ)句用括起來(lái),例如: Write方法示例 % Response.Write(您好,歡迎光臨) Response.Write(敬請(qǐng)?zhí)岢鰧氋F意見) %此時(shí),它還有一種省略方式,例如: Write方法示例 %=敬請(qǐng)?zhí)岢鰧氋F意見%使用Redirect方法就可以引導(dǎo)客戶至另一個(gè)頁(yè)面。語(yǔ)法如下: Response.Redirect(網(wǎng)址變量或字符串)例如: Response.Redirect(http:/) 引導(dǎo)至中國(guó)教育網(wǎng) Response.Redirect(other.asp) 引導(dǎo)至站內(nèi)其他網(wǎng)頁(yè) theURL=http:/ Response.Redirect(t

9、heURL) 引導(dǎo)至變量表示的網(wǎng)址4-7.aspxTest5_1.aspxBuffer屬性用來(lái)設(shè)置服務(wù)器端是否將頁(yè)面先輸出到緩沖區(qū)。它的取值為True或False,默認(rèn)為True。語(yǔ)法: Response.Buffer=True | False使用Response.redirect時(shí)必須保證Buffer值為True。該方法用于輸出二進(jìn)制信息,它不進(jìn)行任何字符轉(zhuǎn)換,直接輸出。其語(yǔ)法為: Response.BinaryWrite(變量或字符串)有時(shí)侯可能在數(shù)據(jù)庫(kù)里保存了二進(jìn)制信息,就可以用該方法輸出了。例如:從數(shù)據(jù)庫(kù)中顯示圖片的信息就要用到該方法。 很多網(wǎng)站能夠記住客戶端的訪問(wèn)次數(shù)。要記住訪問(wèn)次數(shù)

10、可以采取多種方法,其中利用Cookie是一種可以在客戶端保存信息的方法。ASP.NET提供了HttpCookie對(duì)象來(lái)處理Cookie,該對(duì)象是由System.Web.HttpCookie類實(shí)現(xiàn)的。 Cookie俗稱甜餅,可以在客戶端長(zhǎng)期保存信息。它是服務(wù)器端發(fā)送到客戶端瀏覽器的文本串句柄,保存在客戶的硬盤上。HttpCookie對(duì)象其實(shí)是: 利用Response對(duì)象的Cookies方法設(shè)置Cookies; 利用Request對(duì)象的Cookies獲取方法來(lái)獲取Cookies的值。 語(yǔ)法如下: Response.Cookies(“CookiesName”)(關(guān)鍵字) | .屬性=字符串(1)設(shè)置

11、不含關(guān)鍵字的Cookie Response.Cookies(user_name).Value=高航 (2)設(shè)置含關(guān)鍵字的Cookie Response.Cookies(user)(name)=高航 Response.Cookies(user )(age)=22(3)設(shè)置Cookie的有效期 Response.Cookies(user_name).Expires=#1/1/2008# 語(yǔ)法如下: Request.Cookies(“CookiesName”)(關(guān)鍵字) | .屬性(1)省略關(guān)鍵字的用法 user_name=Request.Cookies(user_name).Value (2)有關(guān)

12、鍵字的用法 user_name=Request.Cookies(user)(name) age=Request.Cookies(user)(age) (3)判斷Cookies關(guān)鍵字?jǐn)?shù)目 result=Request.Cookies(CookiesName).Haskeys4-8.aspx利用Session對(duì)象 可以方便記錄客戶的信息。由System.Web.SessionState類實(shí)現(xiàn) 命名空間System.Web屬性 SessionID、TimeOut方法 Abandon事件 Session_OnStart Session_OnEnd4-10.aspx4-9.aspx4-12.aspx4-

13、11.aspxSession對(duì)象有它的有效期,默認(rèn)為20分鐘??蛻舳嗣啃麓蜷_一個(gè)瀏覽器窗口,就會(huì)創(chuàng)建一個(gè)Session對(duì)象,如果超出20分鐘沒(méi)有和服務(wù)器端交互或者關(guān)閉了瀏覽器,則該Session對(duì)象就會(huì)自動(dòng)結(jié)束。修改有效期語(yǔ)法如下: Session.Timeout=整數(shù)(分鐘)例如: Session.Timeout=90 將有效期改為90分鐘Session對(duì)象到期后會(huì)自動(dòng)清除,但到期前可以用Abandon方法強(qiáng)行清除。語(yǔ)法:Session.Abandon例如:Session(user_name)= 萌萌Session.AbandonResponse.Write(Session(user_nam

14、e)說(shuō)明: 先將前兩句復(fù)制到一個(gè)文件中執(zhí)行,然后再將第3句復(fù)制到另一個(gè)ASP.NET文件中執(zhí)行。 Session對(duì)象可以記載特定客戶的信息,與此相反的是,Application對(duì)象可以記載所有客戶信息。簡(jiǎn)而言之,不同的客戶必須訪問(wèn)不同的Session對(duì)象,但可以訪問(wèn)公共的Application對(duì)象。它的最典型的應(yīng)用是聊天室。由System.Web.HttpApplication類實(shí)現(xiàn) 方法: Lock Unlock 事件: Application _OnStart Application _OnEnd 語(yǔ)法: Application(Application名字)=變量、常量、字符串信息或表達(dá)式

15、例如: Application.Lock Application(user_num)=user_num Application (“city”)=“南京” Application.Unlock這是一個(gè)簡(jiǎn)單的聊天室,共分3個(gè)文件 5-13.asp 框架頁(yè)文件(省略不講) 5-14.asp 保存發(fā)言信息 5-15.asp 讀取發(fā)言信息5-14.aspx4-15.aspx和Session非常類似。存儲(chǔ): Dim user_name(2) As String user_name(0)= 白蕓 user_name(1)= 海霞 Application.Lock Application(arry_user

16、_name)=user_name Application.Unlock讀取: Dim user_name () As String user_name= Application(arry_user_name) message.text=user_name(0) & 您好 & user_name(1) & 您好Server對(duì)象是專為處理服務(wù)器上的特定任務(wù)而設(shè)計(jì)的,特別是與服務(wù)器的環(huán)境和處理活動(dòng)有關(guān)的任務(wù)。由System.Web.HttpServerUtility類實(shí)現(xiàn)命名空間:System.Web類: 屬性: ScriptTimeout方法: Execute、Transf

17、er HtmlEncode、UrlEncode CreatObject該屬性用來(lái)規(guī)定腳本文件執(zhí)行的最長(zhǎng)時(shí)間,默認(rèn)為90秒。主要是用來(lái)防止某些可能進(jìn)入死循環(huán)的錯(cuò)誤導(dǎo)致服務(wù)器過(guò)載問(wèn)題。修改方法如下: Server.ScriptTimeout=300該方法可以用于創(chuàng)建組件、應(yīng)用對(duì)象或腳本對(duì)象的實(shí)例。語(yǔ)法如下: Server.CreateObject(ActiveX Server組件)4-16.aspx該方法用來(lái)轉(zhuǎn)化字符串為URL編碼。例子: Server.URLEncode(“a b”) 結(jié)果: a+b可以將虛擬路徑轉(zhuǎn)化為物理路徑。 4-17.aspx該方法用來(lái)停止執(zhí)行當(dāng)前網(wǎng)頁(yè),轉(zhuǎn)到新的網(wǎng)頁(yè)執(zhí)行,執(zhí)

18、行完畢后返回原網(wǎng)頁(yè),繼續(xù)執(zhí)行Execute方法后面的語(yǔ)句。語(yǔ)法如下: Server.Execute(變量或字符串)該方法和Redirect方法的區(qū)別。 (1)Redirect語(yǔ)句盡管是在服務(wù)器端運(yùn)行,但重定向?qū)嶋H發(fā)生在客戶端,而Execute方法的重定向?qū)嶋H發(fā)生在服務(wù)器端。 (2)Redirect語(yǔ)句執(zhí)行完新的網(wǎng)頁(yè)后,并不返回原網(wǎng)頁(yè),而Execute方法卻返回原頁(yè)面,繼續(xù)執(zhí)行下面的語(yǔ)句。 (3)Redirect語(yǔ)句并不能把一些環(huán)境變量傳遞過(guò)去,而Execute方法卻可以。 (4)Redirect方法可以轉(zhuǎn)向一個(gè)網(wǎng)頁(yè)和其他網(wǎng)站,而Execute方法一般只能轉(zhuǎn)到同一個(gè)應(yīng)用程序的其他文件。該方法和E

19、xecute方法非常相似,惟一的區(qū)別是執(zhí)行完新的網(wǎng)頁(yè)后,并不返回原網(wǎng)頁(yè),而是停止執(zhí)行過(guò)程。語(yǔ)法如下: Server.Transfer(變量或字符串) 4-18.aspx4-19.aspx運(yùn)行結(jié)果利用該對(duì)象可以在線發(fā)送E-mail。Mail對(duì)象由System.Web.Mail類庫(kù)實(shí)現(xiàn),它其實(shí)是由MailMessage、MailAttachment、SmtpMail三個(gè)類組成的 。MailMessage類用來(lái)設(shè)置E-mail的內(nèi)容,如發(fā)信人地址、收信人地址等。 MailAttachment類用來(lái)添加附件 。SmtpMail類用來(lái)發(fā)送信件 。最簡(jiǎn)單的發(fā)送方式: Sub Page_Load(Sende

20、r As Object, E As EventArgs)SmtpMail.Send(,您好,祝一切順利) End Sub說(shuō)明: 此時(shí)使用本機(jī)的發(fā)信服務(wù)器,要求在IIS中啟動(dòng)SMTP服務(wù)。4-20.aspx下面的示例比較完整,客戶可以利用表單輸入信件內(nèi)容,并可以選擇客戶端的文件作為附件發(fā)出。要注意,如果發(fā)送客戶端的文件,首先要將該文件上傳到服務(wù)器端,然后再發(fā)送。 4-21.aspx4-21.aspxViewState是服務(wù)器控件狀態(tài)保存的基礎(chǔ),它是一個(gè)Hidden字段,用IE查看 Html源碼,找到一個(gè)名為_VIEWSTATE的Hidden字段,其中有一大堆亂七八糟的字符,這就是頁(yè)面的ViewS

21、tate。ViewState是ASP.NET中用來(lái)保存WEB控件回傳時(shí)狀態(tài)值一種機(jī)制.在WEB窗體(FORM)的設(shè)置為runat=“server”,這個(gè)窗體(FORM)會(huì)被附加一個(gè)隱藏的屬性_VIEWSTATE。_VIEWSTATE中存放了所有控件在ViewState中的狀態(tài)值.ViewState是類Control中的一個(gè)域,其他所有控件通過(guò)繼承Control來(lái)獲得了ViewState功能.它的類型是system.Web.UI.StateBag,一個(gè)名稱/值的對(duì)象集合當(dāng)請(qǐng)求某個(gè)頁(yè)面時(shí),ASP.NET把所有控件的狀態(tài)序列化成一個(gè)字符串,然后做為窗體的隱藏屬性送到客戶端.當(dāng)客戶端把頁(yè)面回傳時(shí),AS

22、P.NET分析回傳的窗體屬性,并賦給控件對(duì)應(yīng)的值.當(dāng)然這些全部是由ASP.NET負(fù)責(zé)的. 如果要使用ViewState,則在ASPX頁(yè)面中必須有一個(gè)服務(wù)器端窗體標(biāo)記().窗體字段是必需的,這樣包含ViewState信息的隱藏字段才能回傳給服務(wù)器.而且,該窗體還必須是服務(wù)器端的窗體,這樣在服務(wù)器上執(zhí)行該頁(yè)面時(shí),ASP.NET頁(yè)面框架才能添加隱藏的字段.Page的EnableViewState屬性值為true.控件的EnableViewState屬性值為true.1.當(dāng)存在頁(yè)面回傳時(shí),不需要維持控件的值就要把ViewState禁止.2.ViewState的索引是大小寫敏感的.3.ViewState

23、不是跨頁(yè)面的.4.為了能保存在ViewState中,對(duì)象必須是可流化或者定義了TypeConverter.5.控件TextBox的TextMode屬性設(shè)置為Password時(shí),它的狀態(tài)將不會(huì)被保存在ViewState中,這應(yīng)該是出于安全性的考慮.6.在頁(yè)面沒(méi)有回傳或重定向或在回傳中轉(zhuǎn)到(transfer)其他頁(yè)面時(shí)不要使用ViewState.7.在動(dòng)態(tài)建立控件時(shí)要小心它的ViewState.8.當(dāng)禁止一個(gè)程序的ViewState時(shí),這個(gè)程序的所有頁(yè)面的ViewState也被禁止了.9.只有當(dāng)頁(yè)面回傳自身時(shí)ViewState才是持續(xù)的.設(shè)置ViewState ViewState可以在控件,頁(yè),程

24、序,全局配置中設(shè)置.缺省情況下EnableViewState為true.如果要禁止所有頁(yè)面ViewState功能,可以在程序配置中把EnableViewState設(shè)為false.1. HTML標(biāo)簽 測(cè)試頁(yè) 2. 2. HyperLink控件 這是最常見的一種轉(zhuǎn)向方法這是最常見的一種轉(zhuǎn)向方法; ; 1)A 服務(wù)器端控件 屬性NavigateUrl指定要跳轉(zhuǎn)到的Url地址 2)NavigateUrl是可以在服務(wù)器端使用代碼修改,這個(gè)區(qū)別于 3)由于HyperLink本身沒(méi)有事件所以要在服務(wù)器端其它事件中設(shè)置NavigateUrl 4)代碼示例 ok 3. Response.Redirect()方法

25、 1)過(guò)程:發(fā)送一個(gè)Http響應(yīng)到客戶端,通知客戶端跳轉(zhuǎn)到一個(gè)新的頁(yè)面,然后客戶端再發(fā)送跳轉(zhuǎn)請(qǐng)求到服務(wù)器端。 2)頁(yè)面跳轉(zhuǎn)之后內(nèi)部控件保存的所有信息丟失,當(dāng)A跳轉(zhuǎn)到B,B頁(yè)面將不能訪問(wèn)A頁(yè)面提交的數(shù)據(jù)信息。 3)使用這個(gè)方法使用這個(gè)方法跳轉(zhuǎn)后瀏覽器地址欄的Url信息改變 4)可以使用Session Cookies Application等對(duì)象進(jìn)行頁(yè)面間的數(shù)據(jù)傳遞 5)重定向操作發(fā)生在客戶端,總共涉及到兩次與Web服務(wù)器的通信:一次是對(duì)原始頁(yè)面的請(qǐng)求,另一次是重定向新頁(yè)面的請(qǐng)求 這個(gè)跳轉(zhuǎn)頁(yè)面的方法跳轉(zhuǎn)的速度不快,因?yàn)樗?個(gè)來(lái)回(2次postback),但他可以跳 轉(zhuǎn)到任何頁(yè)面,沒(méi)有站點(diǎn)頁(yè)面限

26、制(即可以由雅虎跳到新浪),同時(shí)不能跳過(guò)登錄保護(hù)4 4. . Server.Transfer()Server.Transfer()方法方法 1)實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的同時(shí)將頁(yè)面的控制權(quán)進(jìn)行移交 2)頁(yè)面跳轉(zhuǎn)過(guò)程中Request Session等保存的信息不變,跳轉(zhuǎn)之后可以使用上一個(gè)頁(yè)面提交的數(shù)據(jù) 3)跳轉(zhuǎn)之后瀏覽器地址欄的Url不變 4)這種方法的重定向請(qǐng)求是在服務(wù)器端的進(jìn)行的,瀏覽器不知道頁(yè)面已經(jīng)發(fā)生了一次跳轉(zhuǎn) 速度快,只需要一次postback ,但是它必須是在同一個(gè)站點(diǎn)下,因?yàn)樗莝erver的一個(gè)方法。另外,他能跳過(guò)登錄保護(hù)。5. Server.Execute() Server.Execute

27、()方法方法 1)該方法允許當(dāng)前頁(yè)面執(zhí)行同一個(gè)Web服務(wù)器上的另一個(gè)頁(yè)面 2)頁(yè)面執(zhí)行完畢之后重新回到原始頁(yè)面發(fā)出Server.Execute()的位置。 3)這種方式類似針對(duì)頁(yè)面的一次函數(shù)調(diào)用,被請(qǐng)求的頁(yè)面可以使用原始頁(yè)面的表單數(shù)據(jù)和查詢字符串集合 4)被調(diào)用頁(yè)面的Page指令的EnableViewStateMac屬性設(shè)置為False 6. Javascript實(shí)現(xiàn)跳轉(zhuǎn)/ 以下方式直接跳轉(zhuǎn) window.location.href = hello.html; / 以下方式定時(shí)跳轉(zhuǎn) setTimeout(javascript:location.href=hello.html, 5000); 7

28、. 7. 新頁(yè)面顯示新頁(yè)面顯示1)Respose.Write( window.open( + url + ); );2) 打開 3) 打開 private void button1_Click(object sender, EventArgs e) FrmRemoteVM fa = new FrmRemoteVM(); fa.Show(); 當(dāng)需要把用戶跳轉(zhuǎn)到另一臺(tái)服務(wù)器上的頁(yè)面的時(shí)候使用redirect 當(dāng)需要把用戶跳轉(zhuǎn)到非aspx頁(yè)面時(shí)候,如html使用redirect 需要把查詢字符串作為url一部分的時(shí)候保留傳給服務(wù)器的時(shí)候,因?yàn)槠渌?種方法不能做到2次postback,把數(shù)據(jù)先帶回服

29、務(wù)器使用redirect 需要aspx頁(yè)面間的轉(zhuǎn)換(不涉及登錄) 使用transfer 當(dāng)需要把a(bǔ)spx頁(yè)面的輸出結(jié)果插入到另一個(gè)aspx頁(yè)面的時(shí)候使用execute方法。 如果要讓用戶來(lái)決定何時(shí)轉(zhuǎn)換頁(yè)面以及轉(zhuǎn)到哪一個(gè)頁(yè)面,超級(jí)鏈接最適合。 如果要用程序來(lái)控制轉(zhuǎn)換的目標(biāo),但轉(zhuǎn)換的時(shí)機(jī)由用戶決定,使用Web服務(wù)器的HyperLink控件,動(dòng)態(tài)設(shè)置其NavigateUrl屬性。 如果要把用戶連接到另一臺(tái)服務(wù)器上的資源,使用Response.Redirect。 如果要將查詢字符串作為URL的一部分保留,使用Response.Redirect。 如果要將執(zhí)行流程轉(zhuǎn)入同一Web服務(wù)器的另一個(gè)ASPX頁(yè)面

30、,應(yīng)當(dāng)使用Server.Transfer而不是Response.Redirect,因?yàn)镾erver.Transfer能夠避免不必要的網(wǎng)絡(luò)通信,從而獲得更好的性能和瀏覽效果。 如果要捕獲一個(gè)ASPX頁(yè)面的輸出結(jié)果,然后將結(jié)果插入另一個(gè)ASPX頁(yè)面的特定位置,則使用Server.Execute。 如果要確保HTML輸出合法,請(qǐng)使用Response.Redirect,不要使用Server.Transfer或Server.Execute方法。因?yàn)锳SP.NET的頁(yè)面表單提交到自身,完成回傳的功能,所以默認(rèn)情況下不能使用POST方式進(jìn)行多頁(yè)面?zhèn)髦? 1URLURL傳值傳值這是經(jīng)典的傳值方式,這種方法的使

31、用非常簡(jiǎn)單,不過(guò)所傳遞的值是會(huì)顯示在瀏覽器的地址欄上的,而且不能傳遞對(duì)象。所以這種方法一般用于傳遞的值少且安全性要求不高的情況下。在*.aspx頁(yè)面開發(fā)中可以使用超級(jí)鏈接文本進(jìn)行傳值,如以下代碼所示。URL傳值以上鏈接文本將頁(yè)面跳轉(zhuǎn)到GetValues.aspx頁(yè)面,并且通過(guò)URL傳遞urlvalue1變量和urlvalue2變量,其值分別為intel和amd。在*.cs的服務(wù)器端方法中也可以調(diào)用HttpResponse對(duì)象的Redirect方法,將瀏覽器端重定向到新頁(yè)面并通過(guò)URL傳值,如以下代碼所示。Response.Redirect(“/GetValues.aspx?urlvalue1=

32、intel&urlvalue2=amd”);2. Session Session傳值傳值 這種方法將每份數(shù)據(jù)存儲(chǔ)于服務(wù)器變量中,可以傳遞比較多的數(shù)據(jù),并且安全性較高,所以常用于用戶身份的驗(yàn)證功能中。不過(guò),Session變量如果存儲(chǔ)過(guò)多的數(shù)據(jù)會(huì)消耗過(guò)多的服務(wù)器資源。其使用方法如以下代碼所示。SessionSessionValue = “ATI”;/也可以用索引存儲(chǔ)Session0 = “ATI”;/在其他頁(yè)面的服務(wù)器端方法中取值方式為:string str = SessionSessionValue.ToString();/也可以用索引獲取string str = Session0.To

33、String();Session的可在應(yīng)用程序的多個(gè)頁(yè)面中以名稱/值對(duì)的方式共享,直到瀏覽用戶關(guān)閉自己的瀏覽器或者服務(wù)器Session超時(shí)(可設(shè)置,默認(rèn)為20分鐘)。3 3CookieCookie傳值傳值 Cookie是一種比較特殊的數(shù)據(jù)存儲(chǔ)方式,它以文本文件的形式存在于瀏覽用戶的磁盤中。很多登錄系統(tǒng)就是利用Cookie實(shí)現(xiàn)用戶自動(dòng)登錄。即用戶登錄一次的登錄信息將被寫入到用戶電腦的Cookie文件中,下次登錄時(shí),網(wǎng)站自動(dòng)讀取該Cookie完成身份驗(yàn)證。通過(guò)Cookie傳遞數(shù)據(jù)雖然很方便,保存時(shí)間可以自由設(shè)置,但是安全性不高。ASP.NET中操作Cookie的主要類型位于System.Web命名

34、空間下,分別為HttpCookie、HttpResponse以及HttpRequest。HttpCookie可建立和操作獨(dú)立Cookie的安全類型,訪問(wèn)HttpResponse和HttpRequest的Cookies屬性可以獲取HttpCookieCollection集合對(duì)象,以讀取或添加HttpCookie對(duì)象。添加Cookie的方法如以下代碼所示。/創(chuàng)建一個(gè)HttpCookie 對(duì)象,向構(gòu)造函數(shù)傳遞名稱值HttpCookie ck = new HttpCookie(CookieValue);/設(shè)置ck的“Value”屬性(值)ck.Value = “Cookie值”;/設(shè)置ck的過(guò)期時(shí)間為

35、當(dāng)前時(shí)間加上360s,即6分鐘后失效ck.Expires = DateTime.Now.AddSeconds(360);/設(shè)置ck有效范圍(域限制)ck.Domain = ;/將ck添加至HttpCookieCollection對(duì)象Response.Cookies.Add(ck);/也可為以下方法添加/Response.AppendCookie(ck);讀取用戶的Cookie則更為簡(jiǎn)單,只需根據(jù)名稱讀取HttpCookieCollection集合對(duì)象中的子項(xiàng)即可,如以下代碼所示。string str = Request.CookiesCookieValue.Value;除此之外,還可以利用一個(gè)

36、HttpCookie存儲(chǔ)多個(gè)名稱/值對(duì)形式的Cookie信息,如以下代碼所示。HttpCookie ck = new HttpCookie(CookieValue);/以名稱/值對(duì)的方式添加多個(gè)Cookie信息ck.Values.Add(value1, “one”);ck.Values.Add(value2, two);讀取這些Cookie如以下代碼所示。string str = 值1:+Request.CookiesCookieValue.Valuesvalue1;str += 值2: + Request.CookiesCookieValue.Valuesvalue2;說(shuō)明:多數(shù)瀏覽器支持最

37、多可達(dá)4096字節(jié)的Cookie,如果要將為數(shù)不多的幾個(gè)值保存到用戶計(jì)算機(jī)上,瀏覽器還限制了每個(gè)站點(diǎn)可以在用戶計(jì)算機(jī)上保存的Cookie數(shù)量。大多數(shù)瀏覽器只允許每個(gè)站點(diǎn)保存20個(gè)Cookie。如果試圖保存更多的Cookie,則最先保存的Cookie就會(huì)被刪除。還有些瀏覽器會(huì)對(duì)來(lái)自所有站點(diǎn)的Cookie總數(shù)作出限制,這個(gè)限制通常為300個(gè)。用戶可以設(shè)置自己的瀏覽器,拒絕接受Cookie,這種情況下只能結(jié)合其他的數(shù)據(jù)存儲(chǔ)方式。4 4Server.TransferServer.Transfer傳值傳值首先通過(guò)定義一個(gè)public權(quán)限的屬性,該屬性可返回所需傳遞的值。然后在第兩個(gè)頁(yè)面中,使用Context.Handler屬性來(lái)獲得前一個(gè)頁(yè)面實(shí)例對(duì)象的引用,即可通過(guò)訪問(wèn)自定義的屬性獲取需要的值。假設(shè)SendValues.aspx頁(yè)面為傳遞數(shù)據(jù)的頁(yè)面,在SendValue

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論