专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Asp教程 » include的用法:动态Include文件的讨论 »正文

include的用法:动态Include文件的讨论

来源: 发布时间:星期四, 2008年9月25日 浏览:59次 评论:0
我们从个案例谈起:
<%
\'得到用户所在省份
Dim Province
Province = Request.form(\"Province\")
\'下面显示这个省份相关信息
%>
<!--# virtual=\"/ Province/<%= Province%>\"-->
你觉得上面代码可以工作吗?不!简单地使用ASP来达到动态包含你不能达到你想要效果为什么?:Include命令先于ASP代码而得到执行所以上面代码并没有按照作者意愿先得到用户所在省份再包含这个省份信息!

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

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

怎样动态Include文件?

解答
ASP员经常面临最大挑战的是动态Include文件由于# 在ASP代码执行的前处理所以看起来/脑筋是不可能
真是这样吗?
根据你使用Include以及你将Include文件数目使用/也许可以解决问题但这绝对不是任何时候可以奏效而且也不是种有效解决办法你需要做许多手工工作
假设有两个样本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:
<%
request.query(‘param‘)=‘2‘ then
%>
<!--# file=‘2.htm‘-->
<%

%>
<!--# file=‘1.htm‘-->
<%
end
%>
请注意:上面两个# 实际上都得到了处理你可以实际运行看看效果:http://localhost/Test.asp?param=1
http://localhost/Test.asp?param=2
http://localhost/Test.asp
上面我们是把个query作为条件你还可以把时间、日期、浏览器版本等作为条件但是条件越复杂这种思路方法效率越差下面提供了另外种思路:
<%
request(‘param‘)=‘2‘ then
filespec = ‘2.htm‘

filespec = ‘1.htm‘
end
filespec = server.mapPath(filespec)
scr = ‘scripting.fileObject‘
fs = server.createobject(scr)
f = fs.openTextFile(filespec)
content = f.readall
f = nothing
fs = nothing
response.write(content)
%>
在IIS5.0/ASP3.0中有两种新思路方法来支持“动态包含”:
<%
server.transfer filename
server.execute filename
%>
如果正好使用是IIS5.0和ASP3.0那么Ok! 但是IIS5.0需要运行在Windows 2000上
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: