Online Service 在线服务
New Articles 最新更新
Hot Articles 热点文章
Google 广告
首页 … 技术文档 Technical Articles
如何使用ASP产生象安装向导的主页
(时间:2007-6-21 13:24:25 共有 人次浏览)

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

打印 【打印该页】 【关闭窗口

此技术资料来自网络,仅供参考。未经许可,不得转载。
若有侵权,请及时与我们取得联系!
FAQS 常见问题
Consultation 即时咨询
Contact Us 联系我们