帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统v4.6
栏 目:
 
您的位置:首页 > 技术文档 > ASP编程 >
动态Include文件的讨论
作者:caoli(转) 发布时间:2005-03-12 来源:chinaasp
我们从一个案例谈起:
<%
'得到用户所在的省份
Dim Province
Province = Request.form("Province")
'下面显示这个省份相关的信息
%>
<!--#include virtual="/ Province/<%= Province%>"-->
你觉得上面的代码可以工作吗?不!简单地使用ASP来达到动态包含,你不能达到你想要的效果。为什么?因为:Include命令先于ASP代码而得到执行,所以,上面的代码并没有按照作者的意愿,先得到用户所在的省份,再包含这个省份的信息!

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

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

怎样动态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! 但是IIS5.0需要运行在Windows 2000上。

  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·利用JS在页面上动态生成直线  (2005-03-12)
 ·asp动态生成wbmp图片的程序  (2005-03-12)
 ·用Visual C#动态生成组件  (2005-03-12)
 ·动态显示图片的函数(显示广告条  (2005-03-12)
 ·根据选择的Checkbox动态在表格中  (2005-03-12)
 ·对我的网页动态生成图片方法的修  (2005-03-12)
 ·在网页中动态的生成一个gif图片  (2005-03-12)
 ·使用JavaServer Pages技术生成动  (2005-03-12)
 ·使用xml+jsp技术实现网页内容动态  (2005-03-12)
 ·运用反射实现ejb动态委派  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·帝国网站管理系统采集使用教程
·帝国网站管理系统模板制作教程
·帝国CMS模板下载
·Discuz6.0.1UC版通行证发布
·帝国网站管理系统之网站迁移教程
·帝国网站管理系统实例入门教程下载
·《帝国网站管理系统》实例入门教程
   类别最新
·在ASP中使用数据库
·使用ASP脚本技术
·通过启动脚本来感受ASP的力量
·学习使用ASP对象和组件
·解析asp的脚本语言
·初看ASP-针对初学者
·ASP开发10条经验总结
·ASP之对象总结
·ASP与数据库应用(给初学者)
·关于学习ASP和编程的28个观点
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统