编程开发 > ASP > 文章内容

用ASP实现Web表单的数据保持(2)

2012-3-14编辑:zwj
一个更加动态的方法
  还有一个等待解决的问题是我们不知道每个特定的页面有多少需要存储的值。我们真的想要有一种一般的方法可以反复地使用,而不用总是为获取正确的数组维数而担心。最容易的方法就是使用动态数组。在VBScript中,我们可以用ReDim 关键字创建一个动态数组,以后再用相同的关键字调整它的大小。如果我们在调整大小时包含了Preserve 关键字,我们就可以保持存储的值。有一个限制就是只能在最后一维调整多维数组的大小。


  我们例子中的页面(名为aspstate.asp )就使用了这个技术。首先声明一个能容纳255个控制名字和值的数组。注意第二列(最后一列)指数是与我们所发现的控制数不同的一个。我们还将计数器变量intIndex(当我们发现控制域时计算其个数)设置为0。

  'create a dynamic two-dimensional array

  ReDim arrVals(1, 255)

  intIndex = 0

  现在我们在Request.Form集合中循环以填充数组。

'loop through the Request.Form collection

For Each varItem in Request.Form

If Request.Form(varItem).count > 1 Then

  'this is itself a collection so iterate each value

  For intLoop = 1 to Request.Form(varItem).count

   'store control name and value in array

   arrVals(0, intIndex) = varItem & "(" & intLoop & ")"

   arrVals(1, intIndex) = Request.Form(varItem)(intLoop)

   intIndex = intIndex + 1

  Next

Else

  'this is a single control item so just store in array

  arrVals(0, intIndex) = varItem

  arrVals(1, intIndex) = Request.Form(varItem)

  intIndex = intIndex + 1

End If

Next

  现在我们的数组中已经有了全部控制域名和它们的值,intIndex 包含着Request.Form 集合中所表现的控制域个数的记数值。我们可以调整数列的大小,这样一来它就只包含元素的记数值。由于数列从第0列开始,我们就用intIndex - 1 作为新的列数。

  'resize the array to the correct size

  ReDim Preserve arrVals(1, intIndex - 1)

  现在该考虑一下我们如何将数组放入Session 对象中。我们从Request.ServerVariables 集合中收集引用页面(装载这个页面的表单页面)的名字,去掉路径。然后在Session 对象中把它用做变量名:

  'get the name for the session variable using the script

  'name of the form page which was the referrer

  strReferrer = Request.ServerVariables("HTTP_REFERER")

  strReferrer = Mid(strReferrer, InstrRev(strReferrer, "/") + 1)

  'save the array in the Session

  Session(strReferrer) = arrVals

  结束时,我们只要在页面中显示存储在数组中的值来证明我们所做的工作:

Response.Write "< P >---- values received and stored ----< BR >"

'display the array contents

For intIndex = 0 To UBound(arrVals, 2)

Response.Write arrVals(0, intIndex) & " = " _

       & arrVals(1, intIndex) & "< BR >"

Next

  这里是用我们以前使用过的相同的值所得到的结果:


  10700_9364_000927i1-2.gif

用ASP实现Web表单的数据保持(1)

热点推荐

登录注册
触屏版电脑版网站地图