好了,说了这么多,下面直接转入正题吧。这个问题的缘由是因为我需要动态包含ASP文件,大家知道在ASP中只有一种include方法,那就是SSI(Server Side Include),基本上分为以下两种:
复制代码 代码如下:
<!-- #include file="sample.asp" -->
<!-- #include virtual="sample.asp" -->
这两种基本上大家第一种用得多一些,#include virtual包含的是虚拟路径,一般虚拟目录会用得到。但是这两种都属于静态的,如果我们希望是动态包含,但不可以写成:
复制代码 代码如下:
<!-- #include file="<%=MyVar%>" -->
<!-- #include virtual="<%=MyVar%>" -->
上面的写法是错误的,可以理解为,#include指令是在ASP启动脚本引擎执行ASP<% %>标记之间脚本之前执行的,也就是说#include不是ASP的工作,而是服务端程序,如IIS的翻译工作,所以就不会理会你的ASP代码了。
如何实现类似于PHP的include、include_once、require、require_once动态包含脚本方法呢?下面再来看ASP Server对象的一个方法:Server.Execute ,搜索所有的ASP特性,可以发现这个功能最类似于动态include,我们可以做个实验:
Sample.inc.asp
复制代码 代码如下:
<%
Response.Write "Hello World!"
%>
test.asp
复制代码 代码如下:
<%
Server.Execute "Sample.inc.asp"
Response.Write "I am test.asp!"
%>
实际输出应该是“Hello World!I am test.asp!”,说明Server.Execute在动态包含方面可以工作得很好,但是如果我想包含类或者函数呢?接下来做下面这个实验:
Sample.class.asp
复制代码 代码如下:
<%
Class Sample
End Class
%>
test.asp