如何使用ASP產生象安裝向導的主頁 面臨的主要問題何在: 1。界面和一個Windows Wizard完全一樣,有Next和Back按鈕 2。用戶可以使用Back按鈕回到以前的任何一步,并且能夠改變以前任何一步中已經選擇的內容 3。Form必須記住所有填入的內容 4。不能夠使用數據庫 5。不能夠使用Sessions,防止如果Sessiosn失效后用戶的所有輸入丟失,不幸的是,也不能夠使用cookie 因為很多擁護經常關掉瀏覽器的Cookie選項。 6?梢浦残砸,因為它要適應安裝步數不同時的情況 解決方案: 1。使用hidden變量傳遞參數 2。使用POST方式,不使用GET方式,因為這種方式受長度限制 3。每一個頁面都必須有一個用來讀取提交值的函數 4。每一個頁面(除了第一個頁面外)都必須要有一個hidden form 來向前一頁傳遞參數 如果在你的頁面中使用了Checkboxes或則使用了radio buttons,請使用以下代碼讀數值: <% For Each Item in Request.Form If Request.Form(Item).Count Then For intLoop = 1 to Request.Form(Item).Count Response.Write "Item = " & Item & " Index = " & intLoop & "<BR>" Next Else Response.Write "Item = " & Item & "<BR>" End If Next %> 在設計是,對checkboxes和radio采用了特殊的處理方法: 1。只有最新的數值才被考慮使用這兩種方式保存 2。用戶可以使用Back來改變前面輸入的數值,但必須要使用Next提交后才能夠生效 3。頁面必須要能夠應付一個頁面有多個controls的情況 具體實現方法: 第N個頁面應該有: 1。第一個form:它的ACTION= page(N+1).asp和它底部必須有Next按鈕 2。第二個form:它的ACTION= page(N-1).asp和Back按鈕 3。變量命名規則:舉例:N_<page no> 后綴是控件類型. <INPUT TYPE = RADIO NAME = RADIO_P2> 是表示第二頁的一個name是radio的東西 4。一個用來讀取提交的函數 頁面根據一個循環來判斷當前的控件是屬于哪一頁的。 代碼如下: <%@LANGUAGE="VBSCRIPT %> <HTML> <HEAD> </HEAD> <BODY> <!-- NEXT按鈕模塊編程開始 --> <FORM ACTION="page03.asp" METHOD="POST" > <!-------------------------------------------------------------> <!--讀入函數開始 --> <!-------------------------------------------------------------> <% pageno = "_P2" For Each Item in Request.Form WhichPage = InStr(1,CStr(Item), pageno,1) If ((Request.Form(Item).Count) AND (WhichPage = 0)) Then strCount = Request.Form(Item).Count strItem = Request.Form(Item)(strCount) Response.Write "<INPUT TYPE=""HIDDEN"" NAME=""" & Item & """ VALUE=""" & strItem & """>" &VbCrLf ElseIf (NOT(Request.Form(Item).Count) AND (WhichPage = 0)) Then Response.Write "<INPUT TYPE=""HIDDEN"" NAME=""" & Item & """ VALUE=""" & strItem & """>" &VbCrLf End If Next %> <!------------------------------------------------------------> <1-- 讀入函數結束 --> <!------------------------------------------------------------> <!-- #include file = "Check_UnCheck.txt" --> <% Function Check_UnCheck(ctrlName, ctrlValue) Dim ctrlName_in Dim ctrlValue_in Dim ctrlValue_actual Dim outStr ctrlValue_in ="" ctrlName_in = "" ctrlValue_actual = "" outStr = "" ctrlName_in = ctrlName_in & ctrlName ctrlValue_in = ctrlValue_in & ctrlValue If Request.Form(ctrlName_in).Count Then strCount = Request.Form(ctrlName_in).Count ctrlValue_actual = Request.Form(ctrlName_in)(strCount) If ctrlValue_actual = ctrlValue_in Then outStr = "CHECKED" End If Else ctrlValue_actual = Request.Form(ctrlName_in) If ctrlValue_actual = ctrlValue_in Then outStr = "CHECKED" End If End If Check_UnCheck = outStr End Function %> <!-- Back按鈕模塊開始 --> <% strItem1 = "" strItem1a = "" For Each Item1 in Request.Form If Request.Form(Item1).Count Then strCount1 = Request.Form(Item1).Count strItem1 = Request.Form(Item1)(strCount1) Response.Write "<INPUT TYPE=""HIDDEN"" NAME=""" & Item1 & """ VALUE=""" & strItem1 & """>" &VbCrLf strCount1 = "" strItem1 = "" Else strItem1a = Request.Form(Item1) Response.Write "<INPUT TYPE=""HIDDEN"" NAME=""" & Item1 & """ VALUE=""" & strItem1a & """>" &VbCrLf End If Next strItem1 = "" strItem1a = "" %>
|