通过使用 #include 指令,您可以在服务器执行 ASP 文件之前,把另一个 ASP 文件的内容插入到这个 ASP 文件中。

如何使用 #include 指令

这里有一个名为 mypage.asp 文件:

  1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
  2. <!doctype html>
  3. <html>
  4. <head>
  5. <meta charset="utf-8">
  6. <title>如何使用 #include 指令</title>
  7. </head>
  8. <body>
  9. <h3>至理名言</h3>
  10. <!-- 这里引用了 wisdom.inc 文件 -->
  11. <p><!--#include file="wisdom.inc"--></p>
  12. <h3>现在时间是:</h3>
  13. <!-- 这里应用了 time.asp 文件显示当前时间-->
  14. <p><!--#include file="time.asp"--></p>
  15. </body>
  16. </html>

这是 wisdom.inc 文件内容:

  1. “优秀的代码是它自己最好的文档。当你考虑要添加一个注释时,问问自己,“如何能改进这段代码,以让它不需要注释?” —— Steve McConnell 《代码大全》

这是 time.asp 文件内容:

  1. <%
  2. Response.Write(Time)
  3. %>

在 Firefox 浏览器中运行 mypage.asp 文件后,显示效果如下:

通过【查看页面源代码】,它将如下所示:


引入文件的语法

如需在 ASP 页面中引用文件,请把 #include 指令放在注释标签 <!-- --> 中:

  1. <!--#include virtual="somefilename" -->
  2.  
  3. or
  4.  
  5. <!--#include file="somefilename" -->

#include virtual 后面跟的文件是以虚拟目录开始的“绝对路径“。

#include file 后面跟的是文件的相对路径,不可以使用绝对路径,例如:

我们通过例子来学习区别,需要调用的文件(time.asp 和 wisdom.inc)存放在 inc 目录中,主页面(mypage.asp)存放在 test 目录中,树结构下图所示:

我们的 mypage.asp 分别用两种方式进行引用,主要代码如下:

  1. ......
  2. <body>
  3. <h1>#include file 相对地址方式的引用演示</h1>
  4. <h3>至理名言</h3>
  5. <p><!--#include file="../inc/wisdom.inc"--></p>
  6. <h3>现在时间是:</h3>
  7. <p><!--#include file="../inc/time.asp"--></p>
  8. <hr>
  9. <h1>#include virtual 绝对地址方式的引用演示</h1>
  10. <h3>至理名言</h3>
  11. <p><!--#include virtual="/inc/wisdom.inc"--></p>
  12. <h3>现在时间是:</h3>
  13. <p><!--#include virtual="/inc/time.asp"--></p>
  14. </body>
  15. ......

调用后显示效果如下:


特别提示

通过上面的部分,我们已经使用了 INC 作为被引用文件的文件扩展名。如果用户尝试直接浏览 INC 文件,这个文件中的内容会被显示出来。最好还是使用 ASP 作为扩展名。

在脚本执行前,被引用的文件就会被处理和插入。下面的脚本无法运行,就是因为 ASP 会在为变量赋值前执行 #include 指令,如下:

  1. <%
  2. fname = "/inc/wisdom.inc"
  3. %>
  4. <!--#include virtual="<%fname%>" -->

运行后会报错,提示找不到包含的文件 <%fname%>。

你不能在脚本分隔符<%%>之间包含文件引用,也是无法执行的,如下:

  1. <%
  2. For i = 1 To 10
  3. <!--#include virtual="/inc/wisdom.inc"-->
  4. Next
  5. %>

但是下面的这段代码是可以执行的,引用 10 遍,如下:

  1. <%For i = 1 To 10%>
  2. <!--#include virtual="/inc/wisdom.inc"-->
  3. <%Next%>

被引用的文件可以引用其他文件,同一个 ASP 文件可以对同一个文件多次引用。


示例代码下载

IncludeTest.RAR

ASP入门(十七)-ASP #include的更多相关文章

  1. ASP入门(二十二)-连接数据库

    ADO 简介 在 ASP 中访问数据库使用的 ADO 组件. ADO 是一项微软的技术. ADO 指 ActiveX 数据对象(ActiveX Data Objects). ADO 是微软的 Acti ...

  2. C# -- HttpWebRequest 和 HttpWebResponse 的使用 C#编写扫雷游戏 使用IIS调试ASP.NET网站程序 WCF入门教程 ASP.Net Core开发(踩坑)指南 ASP.Net Core Razor+AdminLTE 小试牛刀 webservice创建、部署和调用 .net接收post请求并把数据转为字典格式

    C# -- HttpWebRequest 和 HttpWebResponse 的使用 C# -- HttpWebRequest 和 HttpWebResponse 的使用 结合使用HttpWebReq ...

  3. ASP入门(十三)-Server对象

    Server 对象用于处理服务器上的一些特殊任务,例如,创建组件实例.获取文件路径.执行ASP脚本文件等. Server 对象是体现 ASP 强大功能的一个对象,之前介绍的对象都是针对获取.请求以及简 ...

  4. asp.net php asp jsp 301重定向的代码

    介绍一下针对各类程序系统实施301重定向的代码: 1.Linux主机重定向 Godaddy的Liunx主机,Godaddy本身已经支持Apache,所以直接创建一个.htaccess文件就可以了,一般 ...

  5. ASP.NET没有魔法——ASP.NET OAuth、jwt、OpenID Connect

    上一篇文章介绍了OAuth2.0以及如何使用.Net来实现基于OAuth的身份验证,本文是对上一篇文章的补充,主要是介绍OAuth与Jwt以及OpenID Connect之间的关系与区别. 本文主要内 ...

  6. ASP.NET没有魔法——ASP.NET MVC Razor与View渲染 ASP.NET没有魔法——ASP.NET MVC界面美化及使用Bundle完成静态资源管理

    ASP.NET没有魔法——ASP.NET MVC Razor与View渲染   对于Web应用来说,它的界面是由浏览器根据HTML代码及其引用的相关资源进行渲染后展示给用户的结果,换句话说Web应用的 ...

  7. 【译】在 ASP.NET 和 ASP.NET Core 之间共享代码

    原文 | Ken 翻译 | 郑子铭 随着 .NET 6 的发布,使用 ASP.NET Core 可以获得更多好处.但是将现有代码迁移到 ASP.NET Core 通常听起来像是一项巨大的投资.今天我们 ...

  8. ASP.NET路由[ASP.NET Routing]

    ASP.NET路由[ASP.NET Routing] ASP.NET路由允许你在使用URL时不必匹配到网站中具体的文件,因为这个URL不必匹配到一个文件,你使用了描述用户行为且更容易被用户理解的URL ...

  9. .NET、C#和ASP.NET,ASP.NET MVC 四者之间的区别

    经常,会有一些人搞不清楚.NET和c#和ASP.NET这三者之间的关系,她们都是什么呢?他们之间有什么关系呢?总结一下 首先:什么是.NET? .NET是微软公司下的一个开发平台,.NET核心就是.N ...

随机推荐

  1. linux下授予某用户对某文件夹的读写权限

  2. delphi project of object

    http://www.cnblogs.com/ywangzi/archive/2012/08/28/2659811.html 其实要了解这些东西,适当的学些反汇编,WINDOWS内存管理机制,PE结构 ...

  3. AngularJS路由系列(6)-- UI-Router的嵌套State

    本系列探寻AngularJS的路由机制,在WebStorm下开发.本篇主要涉及UI-Route的嵌套State. 假设一个主视图上有两个部分视图,部分视图1和部分视图2,主视图对应着一个state,两 ...

  4. 论DELPHI三层的数据序列格式的变化

    论DELPHI三层的数据序列格式的变化 要窥三层的数据序列格式,我们可以通过观察DELPHI官方的客户端内存表. 早先流行的是TClientDataSet,它的Data和Delta属性的数据类型都是: ...

  5. Step Detector and Step Counter Sensors on Android

    Step Detector and Step Counter Sensors on Android 时间 2014-03-31 11:56:00 Tech Droid 原文  http://techd ...

  6. ormlite 在android中 排序 条件查询

    ormlite 在android中 排序 条件查询 all = dao.queryBuilder().orderBy("Id", true).where().eq("Ty ...

  7. RabbitMQ:基本命令

    rabbitmq的安装.启动和停止 rabbitmq-service.bat install rabbitmq-service.bat start rabbitmq-service.bat stop ...

  8. java过滤特殊字符的正则表达式

    // 过滤特殊字符 public staticString StringFilter(String str) throws PatternSyntaxException { // 只允许字母和数字 / ...

  9. SharePoint Online 创建文档库

    前言 本文介绍如何在Office 365中创建文档库,以及文档库的一些基本设置. 正文 通过登录地址登录到Office 365的SharePoint Online站点中,我们可以在右上角的设置菜单中, ...

  10. 星际之门SG1第一至十季/全集Stargate SG-1迅雷下载

    英文译名 Stargate SG-1 (第一至十季) (1997-2008)Syfy.本季看点:<星际之门 SG-1>1997年起在美播出第一季,并于全球30多个国家播映,反应热烈,今年( ...