ASP 3.0進階編程(十九)

來源:互聯網
上載者:User
編程|進階 5.3.2 Dictionary對象樣本
本書提供了一系列樣本檔案可用來實驗指令碼已耗用時間庫的各種屬性。
本章代碼的預設頁面提供了一系列可使用的VBScript樣本連結。有些樣本對JScript同樣有效。這些樣本存放在Chapter05目錄下相應的子目錄裡,顯示的介面如圖5-2所示:

圖5-2 ASP指令碼運行期對象樣本頁面
要查看Dictionary對象的運行,在菜單頁面點擊第一個連結,開啟名叫show_dictionary.asp的頁面。這個頁面顯示了我們提供的Dictionary對象的內容,允許實驗其屬性和方法。螢幕如圖5-3所示:

圖5-3 Dictionary對象的屬性和方法
1. Dictionary的global.asa檔案
隨Dictionary對象樣本頁面提供的檔案之一是global.asa。它建立並預先填充了一個會話層範圍的Dictionary對象,因此其內容在頁面請求之間不會丟失。一般說來(考慮到可擴充性),這不是一個理想的做法。在這個例子裡,可以看到Dictionary的屬性和方法的效果。
如果在自己的伺服器上下載並安裝樣本,必須建立一個基於此global.asa檔案的虛擬應用程式。或者將其內容添加到預設網站的根資料夾中的global.asa檔案裡。在第3章講述了如何用嚮導建立虛擬應用程式。然而對於本樣本,建立一個虛擬應用程式最簡單的方法是在Chapter05樣本檔案夾內右擊dictionary子檔案夾,在Properties對話方塊的Home Directory選項卡裡,點擊Create按鈕,如圖5-4所示:

圖5-4 建立虛擬應用程式
在這個global.asa檔案裡,代碼使用<OBJECT>元素建立一個會話層範圍的Scripting.Dictionary對象執行個體。然後在Session_onStart事件處理常式裡將一系列值用Add方法放入Dictionary中,並將對Dictionary對象的引用指定給ASP會話變數MyDictionary:
<OBJECT ID="objBookList" RUNAT="SERVER" SCOPE="SESSION"
PROGID="Scripting.Dictionary">
</OBJECT>

<SCRIPT LANGUAGE="VBScript" RUNAT="SERVER">

Sub Session_onStart()
objBookList.Add "2610", "Professional Active Server Pages 3.0"
objBookList.Add "1274", "Instant JavaScript"
objBookList.Add "2882", "Beginning ASP Components"
objBookList.Add "1797", "Professional ASP Techniques"
objBookList.Add "1835", "AD0 2.0 Programmer's Reference"
Set Session("MyDictionary") = objBookList
End Sub

</SCRIPT>
2. Dictionary樣本頁面
在“Scripting.Dictionary Object”首頁面裡,首要的任務是得到一個會話層範圍的Dictionary對象執行個體的引用。注意,這個引用是一個物件變數,因此必須在VBScript裡使用Set關鍵字。
然後,檢查一下是否得到了一個對象(這是個好習慣),如果沒有正確地建立包含global.asa檔案的虛擬應用程式,檢查一下問題出在哪裡。你將看到我們自己的訊息代替了ASP的錯誤訊息(但是注意,對於這一操作必須關閉預設的錯誤處理)。
<%

on error resume next ' turn off error handling to test if object exists

'retrieve Dictionary object from user's session
Set objMyData = Session("MyDictionary")

If IsObject(objMyData) Then 'found Dictionary object in Session

%>

<P><DIV CLASS="subhead">Iterating the Dictionary with Arrays</DIV>
<%
arrKeysArray = objMyData.Keys 'get all the keys into an array
arrItemsArray = objMyData.Items 'get all the items into an array
For intLoop = 0 To objMyData.Count - 1 'iterate through the array
Response.Write "Key: <B>" & arrKeysArray(intLoop) & "</B> Value: <B>" _
& arrItemsArray(intLoop)& "</B><BR>"
Next
%>

… Other code and controls go here …

<%
Else

'could not find Dictionary object in the session
Response.Write "Dictionary object not available in global.asa for session"

End If
%>
顯示在頁面上的Dictionary內容列表是使用Dictionary對象的Key和Items方法建立的兩個數組,可使用前面的代碼遍曆它們。
3. Dictionary頁面控制項
在Dictionary的內容列表下是一系列的HTML控制項,可用於設定Dictionary對象的某些屬性和執行各種方法。這些控制項全部在一個<FORM>內,其ACTION屬性值是本頁面,所以表單的內容提交回本頁面。在前面的章節的樣本裡使用了同樣的技術。
在<FORM>段中,改變屬性或執行一個方法是通過一個按鈕(沒有標題)實現的。用於屬性和方法的值放入按鈕旁的文字框或列表框中。
該頁的第一個按鈕用於設定Dictionary裡的條目的Key屬性。這裡使用了一個下拉式清單,可以選擇一個已經存在的Key值。下面的代碼建立了頁面內該部分的控制項。為了填充列表,使用了另外一個遍曆Dictionary對象的技術,即For Each … Next語句。代碼如下:

<FORM ACTION="<% = Request.ServerVariables("SCRIPT_NAME") %>" METHOD="POST">

<P><DIV CLASS="subhead">The Dictionary Properties</DIV>
<INPUT TYPE="SUBMIT" NAME="cmdChangeKey" VALUE=" ">
Dict



相關文章

Alibaba Cloud 10 Year Anniversary

With You, We are Shaping a Digital World, 2009-2019

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。