如何使用ASP製作類似安裝嚮導的頁面?

來源:互聯網
上載者:User

如何使用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 = ""

%>

轉自: http://goaler.xicp.net/Article/ShowArticle.asp?ID=269

聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.