打印本文 打印本文  关闭窗口 关闭窗口  
VB辅导:动态include文件
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 14:45:19  文章录入:杜斌  责任编辑:杜斌

  ASP程序员经常面临的最大挑战之一是动态Include文件。由于#include 在ASP代码执行之前处理,所以,看起来,动if/else的脑筋是不可能的。 真是这样吗?

  根据你使用Include的目的,以及你将Include的文件数目,使用if/else也许可以解决问题。但这绝对不是任何时候可以奏效的,而且也不是一种有效的解决办法,因为你需要做许多的手工工作。

  假设有两个样本HTM文件,1.htm和2.htm,为简化起见,假设文件的内容如下:
 
  <!-- 1.HTM: --> 

  <font color=#ff0000>This is 1.htm</font> 

  <!-- 2.HTM: --> 

  <font color=#0000ff>This is 2.htm</font>

  现在我们来试试动态Include:

  <% 

  if request.querystring(‘param‘)=‘2’ then 

  %> 

  <!--#include file=‘2.htm’--> 

  <% 

  else 

  %> 

  <!--#include file=‘1.htm’--> 

  <% 

  end if 

  %>



  请注意:上面的两个#include 实际上都得到了处理。你可以实际运行一下,看看效果:

  http://localhost/Test.asp?param=1

  http://localhost/Test.asp?param=2

  http://localhost/Test.asp

  上面我们是把一个querystring作为条件。你还可以把时间、日期、浏览器版本等作为条件。但是,条件越复杂,这种方法的效率越差。下面提供了另外一种思路:

  <% 

  if request(‘param‘)=‘2’ then 

  filespec = ‘2.htm’ 

  else 

  filespec = ‘1.htm’ 

  end if 

  filespec = server.mapPath(filespec) 

  scr = ‘scripting.fileSystemObject’ 

  set fs = server.createobject(scr) 

  set f = fs.openTextFile(filespec) 

  content = f.readall 

  set f = nothing 

  set fs = nothing 

  response.write(content) 

  %>

  在IIS5.0/ASP3.0中,有两种新的方法来支持“动态包含”:

  <% 

  server.transfer filename 
  
  server.execute filename 

  %>

  如果正好使用的是IIS5.0和ASP3.0,那么Ok! 但是IIS5.0需要运行在Windows 2000上。
打印本文 打印本文  关闭窗口 关闭窗口