ASP3.0高級(jí)編程(二)_第1頁
ASP3.0高級(jí)編程(二)_第2頁
免費(fèi)預(yù)覽已結(jié)束,剩余5頁可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、ASP 3.0高級(jí)編程(二)使用和集合當(dāng)用戶填寫頁面內(nèi)容時(shí)所提供的全部值,或在瀏覽器地址欄輸入在后的值,通過和集合為腳本所用。這是在代碼中訪問值的一種簡(jiǎn)單方法。1、訪問集合的一般技術(shù)大多數(shù)集合與在中見到的普通集合相差不多。實(shí)際上,它們是值的數(shù)組,但能通過使用一個(gè)文本字符串鍵對(duì)大小不 敏感以及一個(gè)整型索引進(jìn)行訪問。因此,假如客戶端頁面包含的如下可通過訪問的集合來訪問其控件內(nèi) 的值二二也可使用窗體中控件的整型索引,索引的范圍從在中第一個(gè)定義的 控件幵始,然后根據(jù)定義的順序排序=1=2然而,后面的這種以整型為索引 的技術(shù)不推薦使用,因?yàn)橐坏┯兄械目丶l(fā)生了變化,或者插入一個(gè)新的 控件,則代碼將得到錯(cuò)

2、誤的值。進(jìn)一步而言,對(duì)于閱讀代碼的人來講,極容易混淆。1訪問集合的全部值可以通過引用集合把整個(gè)上的一系列值變成單個(gè) 的字符變量,且不用提供鍵或索引。二假如文本框包含值和,則語句將返回下列字符=&=注意,提供的值是 以名稱值對(duì)的形式出現(xiàn)的即控件名稱二控件值,并且每一對(duì)名稱值相互之 間是用符號(hào)&相分隔的。假如打算把窗體中的內(nèi)容傳遞單獨(dú)的,希望得到值的標(biāo)準(zhǔn)格式的可執(zhí) 行應(yīng)用程序或,這個(gè)技術(shù)是很有用的。然而,一般說來,都是通過以窗體中控件的名稱為文本鍵來訪問集合 中的內(nèi)容。2遍歷一個(gè)集合有兩種方式遍歷一個(gè)集合中的所有成員,方式與普通 集合的基本相同。每個(gè)集合提供一個(gè)屬性,返回的是集合中

3、條目數(shù)量。 可通過使用一個(gè)整型索引使用屬性來遍歷。=1&假如先前的窗體包含和值的兩個(gè)文本框,將得到如下結(jié)果然而,更好的方法是使用結(jié)構(gòu)。&=&這帶來的好處是既可以訪問控件的名稱又可訪問其值。上述代碼將得到如下結(jié)果=注意,一些瀏覽器返回到的值可能與頁面 上顯示的順序不盡相同。3集合成員的多值性在某些情況下,集合中的各個(gè)成員可能不止一個(gè) 值,這種情況發(fā)生在定義中有幾個(gè)控件有相同屬性時(shí)。例如在集合中,將為創(chuàng)建一個(gè)條目。 然而,它將包括從三個(gè)文本框中得到的值。假如在提交時(shí),用戶留下了 一個(gè)或多個(gè)為空,則返回的值為空字符串。 假如用戶在第一和第三個(gè)文本框分別輸入和,第二個(gè)文本框?yàn)榭?/p>

4、,在 我們的代碼中訪問, 將返回字符串,為了能夠在這種情況下, 訪問單個(gè)值, 可以用復(fù)雜一些的代碼1&=1&=&_&=&對(duì)于前面的包含三個(gè)控件的窗體實(shí)例,這將返回1=2=3=然而,由于很少給多個(gè)文本框相同的名字, 因此這種技術(shù)很少用到。中的單選或選頁按鈕控件在中,需要給幾個(gè)控件相同的屬性的情況是 單選或選項(xiàng)按鈕,例如因?yàn)橛脩糁荒苓x擇多項(xiàng)中的一個(gè)這就是給它們相同 的名字的原因,將僅得到一個(gè)返回值,瀏覽器只能發(fā)送所選擇控件的值。因此,假如這個(gè)窗體的用戶已經(jīng)選擇了,將得到這個(gè)條目,通過遍歷 集得到其值=由于為每個(gè)控件提供了不同的屬性, 反映了每個(gè)條目所對(duì)應(yīng) 的

5、國(guó)家或地區(qū)的名稱。假如省略了屬性,瀏覽器將返回的值為,因此將得到=這是不經(jīng)常用到的,因此一般對(duì)使用相同名稱的單選控件使用屬性。復(fù)選框控件當(dāng)一個(gè)窗體中源碼包含一個(gè)復(fù)選框控件時(shí),一般都給定唯 一的名稱,例如在這種情況下,提交窗體時(shí),假如僅是第一和第三個(gè)復(fù)選 框被選中加標(biāo)記,遍歷集合時(shí),會(huì)得到下列值&=然而, 假如為每個(gè)復(fù)選框提供一個(gè)值, 把這個(gè)值發(fā)往服務(wù)器代替字 符串。例如窗體如下_如果除第三個(gè)復(fù)選框外,全部提交,在集合會(huì)產(chǎn)生下 列結(jié)果=025,003,010假如編寫更復(fù)雜一些集合遍歷代碼,如先前所述單獨(dú) 顯示每個(gè)子鍵,就得到這樣結(jié)果1=0252=0033=010需要注意的是兩種情況, 沒

6、有選中的控件根本不返回任何值。在第一種情況的結(jié)果里, 沒有欺騙性的逗號(hào), 第二種情況也沒有空值。 這與上述的使用文本框的相當(dāng)?shù)臏y(cè)試的結(jié)果不一樣。使用文本框時(shí),每個(gè)文本框都返回一個(gè)值,即使是一個(gè)空字符串。這是瀏覽器造成這樣的結(jié)果。因此在代碼中訪問集合時(shí),要注意這個(gè)問題。上述情況一個(gè)棘手的負(fù)作用是使用復(fù)選框時(shí),復(fù)選框值的索引與在原 始的中控件的位置沒有任何聯(lián)系,在上述的例子中第四個(gè)復(fù)選框的子鍵數(shù) 為3,因?yàn)楫?dāng)窗體提交時(shí),第二個(gè)控件沒有選中。列表控件中的標(biāo)記用來產(chǎn)生標(biāo)準(zhǔn)的下拉列表框,其值以一種有趣的 混合方式表示。下列的窗體創(chuàng)建了包含5個(gè)值可供用戶選擇,由于包含了屬性,因此 可以通過選擇時(shí)按下或鍵,

7、選擇不僅一個(gè)的條目。下圖所示為該頁面,顯示的是選中了三個(gè)條目。 這種特殊的情況返回的是在集合中單個(gè)條目, 它包含選擇的值單個(gè)的 標(biāo)記中指定的屬性, 用逗號(hào)分隔=025,003,010假如使用更加復(fù)雜一些的集 合遍歷代碼單獨(dú)顯示每個(gè)子鍵, 將得到1=0252=0033=010這與上述相同名 稱的復(fù)選框的情況相同。事實(shí)上可以認(rèn)為一個(gè)列表是一列復(fù)選框的列表供選擇不是選中相應(yīng) 的條目。然而,列表框也有指定的值,假如在標(biāo)記中設(shè)置屬性,將得到的是選 擇的選項(xiàng)的文本內(nèi)容,集將包含這樣一個(gè)項(xiàng)目=,并且,同樣,復(fù)雜一些的集合遍歷代碼將返 回如下結(jié)果1=2=3=當(dāng)然, 假如單個(gè)項(xiàng)目被選擇, 且在中提供了屬性, 得

8、到 結(jié)果包含的僅是=025如果沒有提供屬性,得到=這允許既可以缺省即無顯 示選項(xiàng)文本,也可做相應(yīng)的改變。后一種情況在某些情況下是極為有用的,如要顯示一個(gè)說明的字符串 和傳遞一個(gè)完全不同的內(nèi)容如用一個(gè)短碼代表一個(gè)說明性的字符串。提交和圖像控件復(fù)選框和單選框是布爾型控件的例子,選中或選擇返 回的為,不像文本框和大多數(shù)其他的控件,瀏覽器不包含沒有選中或沒有 選擇的控件的值。還有另外一種常用的布爾型控件,稱為按鈕。如、和類型。 類型的控件不返回任何值,因其對(duì)窗體沒有直接的影響。 即使使用用來調(diào)用窗體的方法,瀏覽器在任何請(qǐng)求中將不包含類型控 件的值。同樣,一個(gè)按鈕的值也決不會(huì)發(fā)往服務(wù)器。 然而,輸入按鈕

9、控件和類型實(shí)際提交窗體給服務(wù)器,其屬性包含窗體 的其他控件的值只要在定義中包含一個(gè)屬性。例如,這個(gè)窗體可能是向?qū)ь愋蛻?yīng)用程序的一部分,允許用戶一步步 進(jìn)行或取消進(jìn)程在一個(gè)窗體中,可以包括多個(gè)按鈕。在這種情況下,應(yīng)該給每一個(gè)按鈕唯一的屬性,如上所示。 當(dāng)一個(gè)窗體被提交時(shí),遍歷集合的值,將產(chǎn)生一個(gè)值,這個(gè)值依賴于 按下哪個(gè)按鈕用于提交這個(gè)窗體。假如用戶按下的按鈕,將得到=因此,可查詢集合來決定下一個(gè)顯示 的頁面,例如_3_1_同時(shí),也可根據(jù)需要對(duì)每個(gè)按鈕使用不同的屬性。且選擇其值包含在集合中的控件名稱。在控件沒有一個(gè)完整的標(biāo)記而是隨后跟著較長(zhǎng)的文本標(biāo)簽的情況下, 極為有用,如下圖所示此屏幕上的界面

10、由下列代碼產(chǎn)生?在頁面中,接收到數(shù)據(jù)后,可以檢查按扭名稱提供的值來判斷按下的 是哪個(gè)按鈕。3 1這個(gè)工作是查詢一個(gè)鍵上的集合,如果不存在則返回一個(gè)空的 字符串。換句話說,如果第二個(gè)按鈕頁按下,則的值是一個(gè)空字符串,則其長(zhǎng) 度為零而不至于產(chǎn)生一個(gè)錯(cuò)誤。當(dāng)?shù)诙€(gè)按鈕按下時(shí), 則在集合中這個(gè)條目的值, 將是其長(zhǎng)度大于零。提高使用集合的效率訪問一個(gè)集合來下載一個(gè)值是費(fèi)時(shí)的需計(jì)算資 源的過程,因?yàn)檫@個(gè)操作包含了一系列對(duì)相關(guān)集合的搜索,這比訪問一個(gè) 局部變量要慢得多。因此,如果打算在頁面中多次使用集合中的一個(gè)值,應(yīng)該考慮將其存貯成為一個(gè)局部變量,例如=&=& =1二& &二

11、&搜索所有的集合在某些情況下, 可能知道一個(gè)值的鍵名將出現(xiàn)在集合中, 但不能準(zhǔn)確地知道是 哪一個(gè)集合。例如,假如有幾個(gè)頁面或一個(gè)頁面的不同段發(fā)送一個(gè)值給同一個(gè)腳本, 它可能在或者集合中出現(xiàn)。本章后面部分將研究和集合的差異。 要看一下一個(gè)值為什么可能出現(xiàn)在不同的集合中,考慮一下這種情況 使用了超級(jí)鏈接元素請(qǐng)求一個(gè)頁面。在這種情況下,增加一個(gè)值到請(qǐng)求的唯一方法是把它加到上。然而,同樣的值可能已出現(xiàn)在另一個(gè)頁面的中,或同一頁面不同部分在這種情況下,按下窗體上的按鈕,將發(fā)送集合中一對(duì)名稱值=。然而,按下超級(jí)鏈接也可能發(fā)送名稱值=,但是這次卻是在集合里。 為訪問這個(gè)值,可使用對(duì)象的一個(gè)特殊功能=這將按序搜索全部的集合 、,直到發(fā) 現(xiàn)第一個(gè)匹配值的名稱。這樣做比直接訪問適當(dāng)?shù)募闲实?,并且是不安全的,除非能絕對(duì)保證這個(gè)值不會(huì)出現(xiàn)在另外一個(gè)集合中。 例如,可能希望搜集滿足客戶請(qǐng)求的服務(wù)器的名稱,這通過出現(xiàn)在每 個(gè)查詢中的集合中尋找_來實(shí)現(xiàn)。然而,假如任一其他的集合也包含名為_的值記住鍵名不區(qū)分大小寫, 當(dāng)使用_時(shí),得到的是錯(cuò)誤的結(jié)果。使用_句法,我們將很難進(jìn)行錯(cuò)誤追蹤。 總而言之,使用搜索全部集合技術(shù)要格外小心,且只在沒

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論