Asp包含文件include动态包含方法(含变量)
来源:飘易博客 发布时间:2010-01-14 20:12:00
很多时候,由于程序设计需要,要求在asp的include包含文件里调用动态的文件。如<!--#include file="map1.asp"-->其中的1是个动态参数,需要request获取。但可惜的是,include语句里并不能含有变量,否则将提示找不到文件错误。
本文将提供3种方法解决该问题。
首先,我们需要了解,包含文件的提示和警告信息:被包含的文件可以包含其他文件。只要“#include”命令不导致循环,.asp 文件也可以多次包含同一文件。例如,如果文件 First.asp 包含文件 Second.inc,则 Second.inc 不能反过来包含 First.asp。文件也不能包含其自身。ASP 检测这样的循环或嵌套错误,生成错误消息,并停止处理请求的 .asp 文件。
解决方法一:FSO调用方法
ASP语言是强大易用的语言,我们不要把自己的思维局限固定在一个角落里,“条条大道通罗马”,一个思路不通,换个思路吧。
本方法采用变通的方法实现同样的包含功能。即FSO调用。代码如下:
<%
Function getFileContents(strIncludeFile) '函数:读取包含文件内容
Dim objFSO,objText,strPage
Set objFSO = Server.CreateObject("Scripting.FileSystemObject") '调用FSO对象
Set objText = objFSO.OpenTextFile(Server.MapPath(strIncludeFile))
getFileContents = objText.ReadAll
objText.Close
Set objText = Nothing
Set objFSO = Nothing
End Function
dim p
p=request("p") '2种方式:request.form ,request.querystring
response.write getFileContents("map"&p&".asp")
%> 这样,利用fso函数读取包含文件的内容,然后用response.write把包含文件的内容输出,即实现和include命令同样的功能了,轻松实现自由输出诸如 map1.asp,map2.asp… 等文件内容了。
解决方法二:if...elseif...
此方法适用于要包含的文件数量不多的情况下,也是懒人+笨人的方法,呵呵。代码如下:
<%if a=1 then%>
<!--#include file="map1.asp"-->
<%elseif a=2 then%>
<!--#include file="map2.asp"-->
<%elseif a=3 then%>
<!--#include file="map3.asp"-->
<%end if%> 解决方法三:select case
方法和第二种差不多,稍微好点。代码如下:
<%select case p
case 1%>
<!--#include virtual='inc/****1.asp'-->
<%case 2%>
<!--#include virtual='inc/****2.asp'-->
<%case 3%>
<!--#include virtual='inc/****3.asp'-->
<%case 4%>
<!--#include virtual='inc/****4.asp'-->
<%end select%> 如果你有其他更好的方法,欢迎与我们交流。您可以把你您的想法留在博客评论里,我们期待与您的探讨。
补充:关于asp的include包含命令,需要注意以下方面。
ASP程序在执行脚本命令之前就已经包含文件。因此,不能使用脚本命令来建立被包含的文件名。举例来说,因为 ASP 试图在将文件名指派给变量 name 之前执行“#include”命令,所以下面的脚本无法打开文件 Header1.inc。
<!-- 该脚本将失败 -->
<% name= header1.inc %>
<!-- #include file="<%= name %>" --> 脚本命令和过程必须完全包含在脚本分隔符 <% 和 %> 内,即 HTML 标签 <SCRIPT> 和 </SCRIPT>,或 HTML 标签 <OBJECT> 和 </OBJECT> 内部。也就是说,不能在包含 .asp 文件中打开脚本分隔符,并在被包含的文件中关闭分隔符;脚本或脚本命令必须是一个完整的单元。例如,下面的脚本将不起作用:
<!-- 该脚本将失败 -->
<%
For i = 1 To n
主文件中的语句
<!-- #include file="header1.inc" -->
Next
%>
但下面的脚本会起作用:
<%
For i = 1 to n
主文件中的语句
%>
<!-- #include file="header1.inc" -->
<% Next %>
如果 ASP 脚本包含的文件中存在包含脚本不需要的大量函数和变量,则这些无用的结构反而会影响性能,并最终降低 Web 应用程序的伸缩性。因此,通常将包含文件分成多个小文件,并且只包含那些服务器端脚本必需的文件,而不是包含那些带有冗余信息的一个或多个大型包含文件。


猜你喜欢
- 登录SYS创建临时表空间/*创建临时表空间 */create temporary tablespace 表空间名 t
- 一、Tesseract文字识别是ORC的一部分内容,ORC的意思是光学字符识别,通俗讲就是文字识别。Tesseract是一个用于文字识别的工
- 下载https://downloads.mysql.com/archives/community/下载上面的,下面的不行解压我的解压路径 E
- 前期准备 :注册,填材料,验证等等:https://mp.weixin.qq.com1.浏览一遍简易教程,下载相应的开发工具写一个小例子点击
- 1.示例树的一些属性:层次性:树是按层级构建的,越笼统就越靠近顶部,越具体则越靠近底部。一个节点的所有子节点都与另一个节点的所有子节点无关。
- 1.算法描述:(1)共循环 n-1 次(2)每次循环中,如果 前面的数大于后面的数,就交换(3)设置一个标签,如果上次没有交换,就说明这个是
- 使用python生成随机图片验证码,需要使用pillow模块1.安装pillow模块pip install pillow2.pillow模块
- 本文实例讲述了Scrapy框架基本命令与settings.py设置。分享给大家供大家参考,具体如下:Scrapy框架基本命令1.创建爬虫项目
- 这篇文章主要介绍了python常用排序算法的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友
- 建立资料表:Step1首先开启phpmyadmin,进入wordpress资料库中,并新增一个wp_gbook的资料表与栏位数目8。Step
- Django 的 ORM 有多种关系:一对一,多对一,多对多各自定义的方式为 :一对一: OneToOneField多对一: Foreign
- 导言在前面我们学习了如何创建item级的DataList。和可编辑的GridView一样,每个DataList里的item都包含一个Edit
- 不管是在信贷领域还是支付领域,作为一个风控人员,我们都需要对部署的策略模型进行监控,信贷领域可能还需要对客户的逾期表现进行监控。这时,如果我
- 导言:忽然发现数学家还是很擅长发明新玩意构造新东西的,如很早的欧几里得几何体系,后来的笛卡尔直角坐标系,还有极坐标系,埃尔朗根纲领,一门学科
- 在工作中遇到过 个问题执行一条代码时间过长 而且还不报错,卡死在那。还要继续执行下面代码,如何操作。下面是个简单的实例pip安装 第三方ev
- 在SQL Server中,为了查询性能的优化,有时我们就需要对数据表通过建立索引的方式,目的主要是根据查询要求,迅速缩小查询范围,避免全表扫
- PL/SQL是由Oracle公司对标准SQL进行扩展,专用于Oracle数据库中程序设计的专用语言,属第三代过程式程序设计语言。从Oracl
- 1、启动SQL Server Management Studio,以Windows身份验证方式登录。2、在对象资源管理器窗口中,右键单击服务
- 本文实例讲述了Python实现的FTP通信客户端与服务器端功能。分享给大家供大家参考,具体如下:一 代码1、服务端代码import sock
- 今天在做编程题的时候发现Python的print输出默认换行输出,并且输出后有空格。题目要求输出122而我的输出是:122于是我百度查到取消