ASP会话变量和数组赋值

时间:2016-09-07 17:09:53

标签: arrays asp-classic session-variables

我对会话变量和数组分配有疑问。

我有一个包含10行和20列的二维数组。然后示例1不起作用,示例2起作用:

示例1:

session('anAr')(5, 10) = 'ab'
response.Write '<br>The new value is ' & session('anAr')(5, 10)

会话的新值(&#39; anAr&#39;)(5,10)打印为空字符串。

示例2:

dim localAr: localAr = session('anAr')
locarAr(0)(5, 10) = 'abc'
session('anAr') = localAr
response.Write '<br>The new value is ' & session('anAr')(5, 10)

现在已完成会话更新(&#39; anAr&#39;)(5,10)。

虽然它有效,但我认为问题是所有session('anAr')首先被复制到localAr,然后所有localAr都被复制到session('anAr')

如果有任何方法可以修改session('anAr')(5, 10)而不将会话数组复制到本地数组,请专家告诉我吗?

1 个答案:

答案 0 :(得分:1)

不幸的是,没有。你必须使用本地数组。

来自Session Object (IIS)

  

如果将数组存储在Session对象中,则不应尝试   直接改变存储数组的元素。例如,   以下脚本不起作用:

     

<% Session("StoredArray")(3) = "new value" %>

     

前面的脚本不起作用,因为Session对象是   作为集合实现。数组元素StoredArray(3)没有   收到新的价值。相反,该值被索引到   收集,覆盖存储在该位置的任何信息。

     

强烈建议您在会话中存储数组   对象,您在检索或更改之前检索数组的副本   数组的任何元素。当你完成使用时   数组,你应该再次将数组存储在Session对象中,这样   您所做的任何更改都会保存,如下所示   例如:

<% 
'Creating and initializing the array 
Dim MyArray() 
Redim MyArray(5) 
MyArray(0) = "hello" 
MyArray(1) = "some other string" 

'Storing the array in the Session object. 
Session("StoredArray") = MyArray 

Response.Redirect("file2.asp") 
%>