当前位置:首页>>开发编程>>ASP>>新闻内容  
如何动态ASP文件
作者: 发布时间:2005-9-27 11:20:00 | 【字体:

可以动态Include文件吗?

什么是动态Include?我们从一个案例谈起:
<%
'得到用户所在的省份
Dim Province
Province = Request.form("Province")

'下面显示这个省份相关的信息
%>

<!--#include virtual="/ Province/<%= Province%>"-->

你觉得上面的代码可以工作吗?不!简单地使用ASP来达到动态包含,你不能达到你想要的效果。为什么?因为:Include命令先于ASP代码而得到执行,所以,上面的代码并没有按照作者的意愿,先得到用户所在的省份,再包含这个省份的信息!

如果你确实需要动态包含,你可以这样做:
<%
Select Case Province
Case 1:%>
<!--#include file="1.asp"&#61664;
<% Case 2:%>
<!--#include file="2.asp"&#61664;
<% Case 3:%>
<!--#include file="3.asp"&#61664;
<% End Select%>

应该说,这段代码可以得到你想要的结果。但是,由于你的用户可能来自于33个省,你难道包含33个文件?特别要说明的是,SSInc.dll是不知道你究竟需要哪个包含文件的(事实上,这时候Province还没有值),所以,她把所有的文件都包含进来了!你可以想象,这时候的文件有多大!然后,ASP.DLL会去扫描这个文件中的ASP代码,然后执行!

所以,每当这样的时候,你应该考虑其他的思路,比如数据库,或者采用FileSystemObject。

Q021:怎样动态Include文件?
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!


文章来源:
·用ASP屏蔽迅雷和旋风下载工具的P2P下载
·解决ASP中传送中文参数乱码的问题
·ASP+AJAX做类似Google的搜索提示
·ASP的一个非常棒的Debug类(VBScript)
·ASP中常用的服务器检测源代码
·优化ASP中执行SQL效率的五个方法
·ASP种msxml3.dll 800c0005错误的另一解决方法
·挂QQ的ASP版本网页源代码
·ASP的escape和unescape函数
·使用AspUpload组件上传事例代码
 放生
 愚爱
 够爱
 触电
 白狐
 葬爱
 光荣
 画心
 火花
 稻香
 小酒窝
 下雨天
 右手边
 安静了
 魔杰座
 你不像她
 边做边爱
 擦肩而过
 我的答铃
 怀念过去
 等一分钟
 放手去爱
 冰河时代
 你的承诺
 自由飞翔
 原谅我一次
 吻的太逼真
 左眼皮跳跳
 做你的爱人
 一定要爱你
 飞向别人的床
 爱上别人的人
 感动天感动地
 心在跳情在烧
 玫瑰花的葬礼
 有没有人告诉你
 即使知道要见面
 爱上你是一个错
 最后一次的温柔
 爱上你是我的错
 怎么会狠心伤害我
 不是因为寂寞才想
 亲爱的那不是爱情
 难道爱一个人有错
 寂寞的时候说爱我