【问题标题】:ASP Session variables and array assignmentsASP 会话变量和数组赋值
【发布时间】:2016-09-07 17:09:53
【问题描述】:

我有一个关于会话变量和数组分配的问题。

我有一个 10 行 20 列的二维数组。那么示例 1 不起作用,示例 2 起作用:

示例 1:

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

session('anAr')(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)

现在会话 ('anAr')(5, 10) 的更新已经完成。

虽然可行,但我认为问题在于首先将所有session('anAr')复制到localAr,然后将所有localAr复制到session('anAr')

能否请专家告诉我是否有任何方法可以修改 session('anAr')(5, 10) 而无需将会话数组复制到本地数组?

【问题讨论】:

  • mAn,在您的第一个示例中,您将日期存储在会话变量 anA 中,但从会话变量 anAr 中读取数据。
  • 对不起,我不明白你想告诉我什么。你能详细说明一下吗?
  • session('anA')(5, 10) = 'ab' -- 您将数据(值)保存在名称为anA 的会话变量中,对吗?但在下一行中,您尝试从名称为anAr 的会话变量中读取数据(值)。你看,你正在从 不同的 变量中读取数据。
  • 换句话说:将session('anA')(5, 10) = 'ab' 更改为session('anAr')(5, 10) = 'ab' 用于您的第一个样本
  • 哦,很抱歉,这只是我的问题中的一个印刷错误。我一直在考虑 anAr 和数组名称。如果您仅使用 Ar 名称测试示例,您就会明白我的意思。

标签: arrays asp-classic session-variables


【解决方案1】:

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

来自Session Object (IIS)

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

&lt;% Session("StoredArray")(3) = "new value" %&gt;

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

强烈建议如果在Session中存储数组 对象,您在检索或更改之前检索数组的副本 数组的任何元素。 当您使用完 数组,您应该再次将数组存储在 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") 
%> 

【讨论】:

  • 感谢您的回复。你写给我的信息是我的问题,我希望有办法摆脱它。但不幸的是,正如您所写,除了将会话数组复制到本地数组中的资源之外,没有其他解决方案。
猜你喜欢
  • 1970-01-01
  • 2013-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-30
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多