版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、ASP 3.0高級(jí)編程(二)1、訪問ASP集合之一般技術(shù)大多數(shù)ASP集合與在VB中見到之普通集合相差不多。實(shí)際上,它們是值之?dāng)?shù)組,但能通過使用一個(gè)文本字符串鍵(對(duì)大小不敏感)以及一個(gè)整型索引進(jìn)行訪問。因此,假如客戶端Web頁面包含之如下:FirstName:LastName:可通過訪問ASP之Form集合來訪問其控件內(nèi)之值:strFirstName=Request.Form(“FirstName”)strLastName=Request.Form(“LastName”)也可使用窗體中控件之整型索引,索引之范圍從在HTML中第一個(gè)定義之控件開始,然后根據(jù)定義之順序排序:strFirstName=
2、Request.Form(1)strLastName=Request.Form(2)然而,后面之這種以整型為索引之技術(shù)不推薦使用,因?yàn)橐坏┯蠬TML中之控件發(fā)生了變化,或者插入一個(gè)新之控件,則ASP代碼將得到錯(cuò)誤之值。進(jìn)一步而言,對(duì)于閱讀代碼之人來講,極容易混淆。1)訪問集合之全部值可以通過引用集合把整個(gè)Form上之一系列值變成單個(gè)之字符變量,且不用提供鍵或索引。StrAllFormContent=Request.Form假如文本框包含值Priscilla和Descartes,則Request.Form語句將返回下列字符:FirstName=Priscilla&LastName=Descart
3、es注意,提供之值是以名稱/值對(duì)之形式出現(xiàn)之(即控件名稱=控件值),并且每一對(duì)名稱/值相互之間是用符號(hào)“&”相分隔之。假如打算把窗體中之內(nèi)容傳遞單獨(dú)之,希望得到值之標(biāo)準(zhǔn)格式之可執(zhí)行應(yīng)用程序或DLL,這個(gè)技術(shù)是很有用之。然而,一般說來,都是通過以窗體中控件之名稱為文本鍵來訪問集合中之內(nèi)容。2)遍歷一個(gè)ASP集合有兩種方式遍歷一個(gè)ASP集合中之所有成員,方式與普通VB集合之基本相同。每個(gè)集合提供一個(gè)Count屬性,返回之是集合中條目數(shù)量??赏ㄟ^使用一個(gè)整型索引使用Count屬性來遍歷。ForintLoop=1ToRequest.Form.CountResponse.WriteRequest.For
4、m(intLoop)&“”Next假如先前之窗體包含Priscilla和Descartes值之兩個(gè)文本框,將得到如下結(jié)果:PriscillaDescartes然而,更好之方法是使用ForEach.Next結(jié)構(gòu)。ForEachobjItemInRequest.FormResponse.WriteobjItem&“=”&Request.Form(objItem)&“”Next這帶來之好處是既可以訪問控件之名稱又可訪問其值。上述代碼將得到如下結(jié)果:FirstName=PriscillaLastName=Descartes注意,一些瀏覽器返回到ASP之值可能與頁面上顯示之順序不盡相同。3)集合成員之多
5、值性在某些情況下,ASP集合中之各個(gè)成員可能不止一個(gè)值,這種情況發(fā)生在HTML定義中有幾個(gè)控件有相同Name屬性時(shí)。例如:在Form集合中,將為“OtherHobby”創(chuàng)建一個(gè)條目。然而,它將包括從三個(gè)文本框中得到之值。假如在提交時(shí),用戶留下了一個(gè)或多個(gè)為空,則返回之值為空字符串。假如用戶在第一和第三個(gè)文本框分別輸入Gardening和Mountaineering,第二個(gè)文本框?yàn)榭?,在我們之ASP代碼中訪問Request.Form(“OtherHobby”),將返回字符串:Gardening,Mountaineering為了能夠在這種情況下,訪問單個(gè)值,可以用復(fù)雜一些之代碼:ForEachob
6、jItemInRequest.FormIfRequest.Form(objItem).Count1ThenMorethanonevalueinthisitemResponse.WriteobjItem&“:”ForintLoop=1ToRequest.Form(objItem).CountResponse.Write“Subkey”&intLoop&“value=“_&Request.Form(objItem)(intLoop)&“”NextElseResponse.WriteobjItem&“=”&Request.Form(objItem)&“”EndIfNext對(duì)于前面之包含三個(gè)Other
7、Hobby控件之窗體實(shí)例,這將返回:OtherHobby:Subkey1value=GardeningSubkey2value=Subkey3value=Mountaineering然而,由于很少給多個(gè)文本框相同之名字,因此這種技術(shù)很少用到。a)HTML中之單選或選頁按鈕控件在HTML中,需要給幾個(gè)控件相同之Name屬性之情況是單選(或選項(xiàng))按鈕,例如:Ilivein:AmericaEuropeAsia因?yàn)橛脩糁荒苓x擇多項(xiàng)中之一個(gè)(這就是給它們相同之名字之原因),將僅得到一個(gè)返回值,瀏覽器只能發(fā)送所選擇控件之值。因此,假如這個(gè)窗體之用戶已經(jīng)選擇了“Europez”,將得到這個(gè)條目,通過遍歷Fo
8、rm集得到其值:Country=EU由于為每個(gè)控件提供了不同之VALUE屬性,反映了每個(gè)條目所對(duì)應(yīng)之國家或地區(qū)之名稱。假如省略了VALUE屬性,瀏覽器將返回之值為“on”,因此將得到:Country=on這是不經(jīng)常用到之,因此一般對(duì)使用相同名稱之單選控件使用VALUE屬性。b)HTML復(fù)選框控件當(dāng)一個(gè)窗體中HTML源碼包含一個(gè)復(fù)選框控件時(shí),一般都給定唯一之名稱,例如:Ienjoy:ReadingEatingSleeping在這種情況下,提交窗體時(shí),假如僅是第一和第三個(gè)復(fù)選框被選中(加標(biāo)記),遍歷Form集合時(shí),會(huì)得到下列值:Reading=onSleeping=on然而,假如為每個(gè)復(fù)選框提供一
9、個(gè)值,把這個(gè)值發(fā)往服務(wù)器代替字符串“on”。例如窗體如下:Ienjoy:_Swimming_ReadingEatingSleeping如果除第三個(gè)復(fù)選框外,全部提交,在Request.Form集合會(huì)產(chǎn)生下列結(jié)果:Hobby=Hobby025,Hobby003,Hobby010假如編寫更復(fù)雜一些集合遍歷代碼,如先前所述(單獨(dú)顯示每個(gè)子鍵),就得到這樣結(jié)果:Hobby:Subkey1value=Hobby025Subkey2value=Hobby003Subkey3value=Hobby010需要注意之是兩種情況,沒有選中之控件根本不返回任何值。在第一種情況之結(jié)果里,沒有欺騙性之逗號(hào),第二種情況也
10、沒有空值。這與上述之使用文本框之相當(dāng)之測(cè)試之結(jié)果不一樣。使用文本框時(shí),每個(gè)文本框都返回一個(gè)值,即使是一個(gè)空字符串。這是瀏覽器造成這樣之結(jié)果。因此在ASP代碼中訪問集合時(shí),要注意這個(gè)問題。上述情況一個(gè)棘手之負(fù)作用是使用復(fù)選框時(shí),復(fù)選框值之索引與在原始之HTML中控件之位置沒有任何聯(lián)系,在上述之例子中第四個(gè)復(fù)選框之子鍵數(shù)為3,因?yàn)楫?dāng)窗體提交時(shí),第二個(gè)控件沒有選中。c)HTML列表控件HTML中之標(biāo)記用來產(chǎn)生標(biāo)準(zhǔn)之下拉列表框,其值以一種有趣之混合方式表示。下列之窗體創(chuàng)建了包含5個(gè)值可供用戶選擇,由于包含了MULTIPLE屬性,因此可以通過選擇時(shí)按下Shift或Ctrl鍵,選擇不僅一個(gè)之條目。Prog
11、rammingSwimmingReadingEatingSleeping下圖所示為該頁面,顯示之是選中了三個(gè)條目。 這種特殊之情況返回之是在Form集合中單個(gè)條目,它包含選擇之值(單個(gè)之標(biāo)記中指定之VALUE屬性),用逗號(hào)分隔:Hobby=Hobby025,Hobby003,Hobby010假如使用更加復(fù)雜一些之集合遍歷代碼(單獨(dú)顯示每個(gè)子鍵),將得到:Hobby:Subkey1value=Hobby025Subkey2value=Hobby003Subkey3value=Hobby010這與上述相同名稱之復(fù)選框之情況相同。事實(shí)上可以認(rèn)為一個(gè)SELECT列表是一列復(fù)選框之列表供選擇(不是選中)
12、相應(yīng)之條目。然而,列表框也有指定之值,假如在標(biāo)記中設(shè)置VALUE屬性,將得到之是選擇之選項(xiàng)之文本內(nèi)容,Request.Form集將包含這樣一個(gè)項(xiàng)目:Hobby=Swimming,Reading,Sleeping并且,同樣,復(fù)雜一些之集合遍歷代碼將返回如下結(jié)果:Hobby:Subkey1value=SwimmingSubkey2value=ReadingSubkey3value=Sleeping當(dāng)然,假如單個(gè)項(xiàng)目被選擇,且在中提供了VALUE屬性,得到結(jié)果包含之僅是:Hobby=Hobby025如果沒有提供VALUE屬性,得到:Hobby=Swimming這允許既可以缺省(即無VALUE)顯示選
13、項(xiàng)文本,也可做相應(yīng)之改變。后一種情況在某些情況下是極為有用之,如要顯示(一個(gè)說明之字符串)和傳遞一個(gè)完全不同之內(nèi)容(如用一個(gè)短碼代表一個(gè)說明性之字符串)。d)HTML提交和圖像控件復(fù)選框和單選框是布爾型控件之例子,選中或選擇返回之為“on”,不像文本框和大多數(shù)其他之HTML控件,瀏覽器不包含沒有選中或沒有選擇之控件之值。還有另外一種常用之布爾型控件,稱為HTML按鈕。如、和.類型。BUTTON類型之控件不返回任何值,因其對(duì)窗體沒有直接之影響。即使使用用來調(diào)用窗體之Submit方法,瀏覽器在任何請(qǐng)求中將不包含BUTTON類型控件之值。同樣,一個(gè)按鈕之值也決不會(huì)發(fā)往服務(wù)器。然而,輸入按鈕控件SUB
14、MIT和IMAGE類型實(shí)際提交窗體給服務(wù)器,其VALUE屬性包含窗體之其他控件之值(只要在HTML定義中包含一個(gè)NAME屬性)。例如,這個(gè)窗體可能是向?qū)ь愋蚖eb應(yīng)用程序之一部分,允許用戶一步步進(jìn)行或取消進(jìn)程:在一個(gè)窗體中,可以包括多個(gè)SUBMIT按鈕。在這種情況下,應(yīng)該給每一個(gè)按鈕唯一之VALUE屬性,如上所示。當(dāng)一個(gè)窗體被提交時(shí),遍歷Request.Form集合之值,將產(chǎn)生一個(gè)值,這個(gè)值依賴于按下哪個(gè)按鈕用于提交這個(gè)窗體。假如用戶按下之“Previous”按鈕,將得到:btnSubmit=Previous因此,可查詢Request.Form集合來決定下一個(gè)顯示之頁面,例如:SelectCa
15、seRequest.Form(“btnSubmit”)Case“Next”Response.Redirect“page_3.asp”Case“Previous”Response.Redirect“page_1.asp”Case“Cancel”Response.Redirect“main_menu.asp”EndSelect同時(shí),也可根據(jù)需要對(duì)每個(gè)按鈕使用不同之NAME屬性。且選擇其值包含在Form集合中之控件名稱。在控件沒有一個(gè)完整之標(biāo)記而是隨后跟著較長之文本標(biāo)簽之情況下,極為有用,如下圖所示。此屏幕上之界面由下列代碼產(chǎn)生:Whatdoyouwanttodonow?Goonthenextpag
16、eGObacktothepreviouspageCancelandgobacktothemainmenupage在ASP頁面中,接收到數(shù)據(jù)后,可以檢查按扭名稱提供之值來判斷按下之是哪個(gè)按鈕。IfLen(Request.Form(“btnNext”)ThenResponse.Redirect“page_3.asp”IfLen(Request.Form(“btnPrevious”)ThenResponse.Redirect“page_1.asp”IfLen(Request.Form(“btnCancel”)ThenResponse.Redirect“main_menu.asp”這個(gè)工作是查詢一個(gè)鍵
17、上之ASP集合,如果不存在則返回一個(gè)空之字符串。換句話說,如果第二個(gè)按鈕(previous頁)按下,則Request.Form(“btnNext”)之值是一個(gè)空字符串,則其長度為零而不至于產(chǎn)生一個(gè)錯(cuò)誤。當(dāng)?shù)诙€(gè)按鈕按下時(shí),則在Form集合中這個(gè)條目之值Request.Form(“btnPrevious”),將是“”其長度大于零。e)提高使用Request集合之效率訪問一個(gè)ASP集合來下載一個(gè)值是費(fèi)時(shí)之需計(jì)算資源之過程,因?yàn)檫@個(gè)操作包含了一系列對(duì)相關(guān)集合之搜索,這比訪問一個(gè)局部變量要慢得多。因此,如果打算在頁面中多次使用集合中之一個(gè)值,應(yīng)該考慮將其存貯成為一個(gè)局部變量,例如:strTitle=R
18、equest.Form(“Title”)strFirstName=Request.Form(“FirstName”)strLastName=Request.Form(“LastName”)IfLen(stTitle)ThenstrTitle=strTitle&“IfstrFirstName=“ThenStrFullName=strTitle&“&strLastNameElseIfLen(strFirstName)=1ThenStrFullName=strTitle&strFirstName&“&strLastNameElseStrFullName=strTitle&strFirstName&“
19、”&strLastNameEndIff)搜索所有之Request集合在某些情況下,可能知道一個(gè)值之鍵名將出現(xiàn)在Request集合中,但不能準(zhǔn)確地知道是哪一個(gè)集合。例如,假如有幾個(gè)頁面(或一個(gè)頁面之不同段)發(fā)送一個(gè)值給同一個(gè)ASP腳本,它可能在Form或者QueryString集合中出現(xiàn)。本章后面部分將研究Form和QueryString集合之差異。要看一下一個(gè)值為什么可能出現(xiàn)在不同之集合中,考慮一下這種情況:使用了超級(jí)鏈接元素請(qǐng)求一個(gè)頁面。在這種情況下,增加一個(gè)值到請(qǐng)求之唯一方法是把它加到URL上。然而,同樣之值可能已出現(xiàn)在另一個(gè)頁面之中,或同一頁面不同部分:.ForhelpgototheHelpPage.在這種情況下,按下窗體上之Help按鈕,將發(fā)送Request.Form集合中一對(duì)名稱/值“page=Help”。然而,按下超級(jí)鏈接也可能發(fā)送名稱/值“Page=Help”,但是這次卻是在QueryString集合里。為訪問這個(gè)值,可使用ASPRequest對(duì)象之一個(gè)特殊功能:strPage=Request(“page”)這將按序搜索全部之集合QueryStr
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版電力設(shè)備供應(yīng)商設(shè)備采購及安裝合同3篇
- 二零二五年度新型外墻涂料施工勞務(wù)分包質(zhì)量保證合同3篇
- 二零二五版VOC環(huán)保設(shè)施全生命周期運(yùn)維合同2篇
- 二零二五年股權(quán)投資退出與回購條款合同范本3篇
- 二零二五版起重設(shè)備吊裝安全管理合同3篇
- 二零二五年杭州房產(chǎn)中介房屋租賃合同規(guī)范文本9篇
- 二零二五版?zhèn)}儲(chǔ)物流倉儲(chǔ)場(chǎng)地租賃合同20篇
- 二零二五版智能電網(wǎng)500KVA箱變?cè)O(shè)備維護(hù)保養(yǎng)服務(wù)合同3篇
- 二零二五年接送機(jī)服務(wù)及行李寄存合同3篇
- 二零二五年度高端商務(wù)座椅定制與物流配送合同3篇
- 中央2025年國務(wù)院發(fā)展研究中心有關(guān)直屬事業(yè)單位招聘19人筆試歷年參考題庫附帶答案詳解
- 外呼合作協(xié)議
- 小學(xué)二年級(jí)100以內(nèi)進(jìn)退位加減法800道題
- 2025年1月普通高等學(xué)校招生全國統(tǒng)一考試適應(yīng)性測(cè)試(八省聯(lián)考)語文試題
- 《立式輥磨機(jī)用陶瓷金屬復(fù)合磨輥輥套及磨盤襯板》編制說明
- 保險(xiǎn)公司2025年工作總結(jié)與2025年工作計(jì)劃
- 育肥牛購銷合同范例
- 暨南大學(xué)珠海校區(qū)財(cái)務(wù)辦招考財(cái)務(wù)工作人員管理單位遴選500模擬題附帶答案詳解
- DB51-T 2944-2022 四川省社會(huì)組織建設(shè)治理規(guī)范
- 2024北京初三(上)期末英語匯編:材料作文
- 2023年輔導(dǎo)員職業(yè)技能大賽試題及答案
評(píng)論
0/150
提交評(píng)論