【发布时间】:2010-05-26 16:24:05
【问题描述】:
我想编写一个包含外部文件的函数,很像 Server.Execute,但会传递参数。我知道 Server.Execute 将传递 query 参数,但我想更一般地传递数据。例如:
' main.asp
MyInclude("external.inc", Array("mykey", "myval"))
' external.inc
Response.Write mykey
如果不阅读外部罚款、玩弄它并执行,我怀疑我能走得那么远,但我想尽可能接近。另外,如果可能的话,出于安全原因,我宁愿避免使用查询传递选项。
编辑:
如果可能的话,我希望满足的条件是:
- 动态包含(即无 SSI)
- 调用的简单语法(最好是单个函数调用)
- 简单的包含文件(仅 HTML/ASP sn-ps)
- 尽可能多地传递数据。
SSI 适合 2、3 和 4,我会在心跳中使用它,但我不想将显式路径硬编码到我的文件中。如果我可以使用 VBScript 的机制,我可以指定包含的名称并让包含函数找到它。
读取文件并执行将满足 1、2 和 4。违反了 3,因为您不能将直接 HTML 放入包含中。我使用这种方法来导入脚本,因为我不需要那种能力,但是使用 sn-ps,它是必须的。
Server.Execute 有 1、2 和 3,但传递包含数据的唯一方法 (AFAICT) 是使用查询字符串。不可能保留调用者的执行上下文。
将包含写入类将满足 1、2 和 4。然后包含文件将变得更加复杂。
【问题讨论】:
-
也许我没有得到您真正想要的东西,但听起来您应该将 inc 功能放入 COM 组件或创建 Web 服务。
标签: asp-classic vbscript include