【问题标题】:Can you populate Classic ASP Constants (CONST) dynamically?您可以动态填充经典 ASP 常量 (CONST) 吗?
【发布时间】:2021-11-26 18:19:14
【问题描述】:

我希望通过从 Recordset(或数组)动态创建这些常量来用 ~ 25 个声明的常量替换包含文件。我尝试循环遍历记录集,也尝试填充二维数组,然后尝试从数组值中设置这些常量,但它似乎采用“常量”文字之后的内容而不是值。

If (not rsVars.Eof) Then

cCount = rsVars.RecordCount
ReDim cArray(cCount - 1, 1)

For i = 0 To cCount - 1
  cArray(i, 0) = rsVars("VariableNm")
  cArray(i, 1) = rsVars("Value")
  rsVars.MoveNext
Next

End If

For i = 0 To cCount - 1

' Display the Array Elements - WORKS and Displays All Variables and Desired Values  
  Response.write "("&(i+1)&") " & cArray(i, 0) & " = " & cArray(i, 1) & "<br>"
' Attempt to set Constant Variables - this next line errors - "Name_redefined"
  Const cArray(i, 0) = cArray(i, 1)

Next

【问题讨论】:

  • 常量就是那个常量,允许它们被一个变量值设置就达不到目的了。
  • 我不推荐它,但您可以使用ExecuteGlobal statement 设置它们,方法是传递一个动态构建的字符串,然后将其解释为代码。
  • 这能回答你的问题吗? Windows VBScript - Executing code with Eval
  • 您可以创建一个字典 (Server.CreateObject("Scripting.Dictionary") 并将其添加到 Application 对象并在整个应用程序中使用它。
  • 或者,可以在应用程序启动时创建 inc 文件,并将这些文件包含在需要的页面中。 @user692942:这取决于有多少记录。

标签: arrays asp-classic constants


【解决方案1】:

您可以使用 server.execute 方法来实现这一点。 但它需要一个 FILE 路径才能这样做。

您需要使用 FileSystemObject 动态创建文件,并将文件的完整路径传递给 server.execute 方法,以使这些变量可用作常量。 前任: 常量.asp

注意

值将在用户会话和请求中保持不变。

如果您需要按用户、公司、日期等设置的不同常量集,则需要更改文件名以包含唯一常量-.asp 并执行该文件。

参考文献

https://www.w3schools.com/asp/met_execute.asp

https://www.w3schools.com/ASP/asp_ref_filesystem.asp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    相关资源
    最近更新 更多