0

我有一个为当前用户设置变量的函数。变量名称以模块名称为前缀——基本上,应用程序的设置方式,Client 是一个类,Server 是一个类,Agency 是一个类等等。这是一种尝试创建一个系统,通过该系统,我们可以通过 200 多台服务器,通过尽可能少的点击并使用其数据库中的实时数据,找到有关客户或其网站的任何关键信息。

功能如下:

public sub setVariable(varName, varValue)
    varValue = cstr(varValue)
    def = ""
    if varValue = "" then def = "1"
    response.write vbcrlf & "Variable: " & varName & " : " & varValue & vbcrlf
    if not cstr("" & getVariable(varName, def)) = cstr("" & varValue) then
        response.write vbcrlf & varName & " : " & varValue & vbcrlf
        prepend varName, "Module." & Name & "."
        response.write vbcrlf & varName & " : " & varValue & vbcrlf
        session(varName) = varValue
        Core.RunSproc "SetUserVariable", array("@name", "@value"), array(varName, cstr(varValue)), setVar
    end if
end sub

现在在第 5 行,它是第一次输出,只有“ID”作为变量名输出。但是 2 行后,名称设置为“Module.<module-name>.ID”(例如 Module.Server.ID。2 行之后,在 prepend 语句之后(其作用与 do 相同varName = "something" & varName),它输出something + "Module.<module-name>.ID".实际上,在这种情况下,它输出"Module.Server.Module.Server.ID"。请注意,如果我取出任何东西,它会从第一个 Module.Server 中取出,而不是第二个。有谁知道是什么原因造成的?看起来好像是 Module.Server 。服务器被添加到第 5 行和第 7 行之间的变量名称之前,但唯一的一行是 if 语句。提前致谢。

4

1 回答 1

1

似乎我找到了答案。事实上,ASP 自动假定输入到函数中的变量是 byref。因此,在调用 getVariable 时,我实际上是在前面加上“Module.Server”。也在那里,因为它是 byref 变量保持了该值。

问候,克拉基

于 2013-05-12T13:40:31.993 回答