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 应用程序的伸缩性。因此,通常将包含文件分成多个小文件,并且只包含那些服务器端脚本必需的文件,而不是包含那些带有冗余信息的一个或多个大型包含文件。
猜你喜欢
- asp中我们可以利用ERR对象来判断sql语句执行是否成功:SQL="Insert INTO TABLE(F1,F2) value
- 表单的验证一直是网页设计者头痛的问题,表单验证类 Validator就是为解决这个问题而写的,旨在使设计者从纷繁复杂的表单验证中解放出来,把
- 1 查找记录条数 select count(*) from table_name(换成表名)&nbs
- 快速掌握 Mysql数据库对文件操作的封装在查看Mysql对文件的操作中,它在不同的操作系统上对文件的操作,除了使用标准C运行库函数,包括o
- MySQL出错代码列表:1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库
- asp之家注:一个取图片尺寸的asp类,支持jpg,gif,png格式的图片文件;读取图片的尺寸其实很有用,当我们在设计一个新闻文章添加页面
- 指定的代码页特性无效。 codepage属性:是指出网页的代码页 如果制作的网页脚本与WEB服务端的默认代码页不同,则必须指明代码页: 代码
- 由于XML本身的诸多优点,XML技术已被广泛的使用,目前的好多软件技术同XML紧密相关,比如微软的.net 平台对xml提供了强大的支持,提
- 下面为大家举一个例子,请按照下面的步骤: (1)从http://home.gbsource.net/xuankong/dll.z
- 阅读上一篇:FrontPage2002简明教程一:安装与界面FrontPage中对于文字与图像的处理与Word很相似,用过Word的人对于F
- 在用户体验这个行业,经常会听到,可用性,可访问性这样专业的名词,但是,事实上在很多产品实现过程里都忽略了这一点!WHY?举个很简单的例子,用
- 几个利用背景结合a:hover做的小东东,希望对大家有所帮助。<!DOCTYPE html PUBLIC "-//W3C//
- 这个格式是我自创的,经常有人问我为什么,这里做个简单总结:1、分类,一个模块或者同类功能定义为一类定义,每类定义之间用段落隔开。2、分级,每
- 为了方便使用分类,我定义了一个分类表category,里面字段是id(自动编号) cat_name(分类名) pare
- MySQL是一个非常流行的小型关 系型数据库管理系统,2008年1月16号被Sun公司收购。目前MySQL被广泛地应用在Internet上的
- oracle命令删除用户:connect / as sysdba; shutdown abort; startup;&n
- 这两个字符串真实长度和取固定长度的字符串函数是在 photo.163.com 的js文件里看到的。 作者&nb
- 下面这段代码能够显示,当前用户所能够看到的所有的用户和表有兴趣的, 可以把每个表的内容加上<% Dim objOraSess
- 这一段CSS代码相当简单,目的就是想用CSS来控制某段文字的显示与隐藏。起初我采用了下面的代码,令人不可思议的是,它们在我的IE6.0上居然
- 有时候,我们在某一重要的时间段需要监控某张表的变化情况,包含插入、更新、删除。举例来说,当我们把数据导出到外部的系统时,我们希望导出的是全部