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

2008-02-23 05:31:36来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

一个更加动态的方法
  更有一个等待解决的问题是我们不知道每个特定的页面有多少需要存储的值。我们真的想要有一种一般的方法能够反复地使用,而不用总是为获取正确的数组维数而担心。最容易的方法就是使用动态数组。在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




标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 用ASP实现Web表单的数据保持(三)

下一篇: 用ASP实现Web表单的数据保持(一)

热门词条
热门标签