`

如何将一个HTML页面嵌套在多个动态页面(asp)

asp 
阅读更多

正 文:

    很多时候,由于程序设计需要,要求在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 应用程序的伸缩性。因此,通常将包含文件分成多个小文件,并且只包含那些服务器端脚本必需的文件,而不是包含那些带有冗余信息的一个或多个大型包含文件。

 

如果是用if else那还算什么动态?case也一样,所以我想用fso的方法,可惜我最后失败了。文章来源:http://www.piaoyi.org/asp/asp-include-variables.html

 

最后我是用的js的方法的XMLHttpRequest send ,responseText到div的innerHtml中得到了解决方法:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<html>
<head>
    <meta http-equiv="Content-Type"     content="text/html; charset=utf-8" />
<script>
  window.onload =  function () {
	var req = false;
	var url  ="text"+Math.floor(Math.random()*10+1)+".asp";
   // Safari, Firefox, 及其他非微软浏览器
	if (window.XMLHttpRequest) {
		try {
			req = new XMLHttpRequest();
			} catch (e) {
				req = false;
			}
		} else if (window.ActiveXObject) {
		// For Internet Explorer on Windows
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
		try {
			req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {
		req = false;
		}
	}
}
var element = document.getElementById("includefooter");
if (!element) {
	alert("函数clientSideInclude无法找到id " + id + "。" +"你的网页中必须有一个含有这个id的div 或 span 标签。");
	return;
	}
if (req) {
	// 同步请求,等待收到全部内容
	req.open('GET', url, false);
	req.send(null);
	element.innerHTML = req.responseText;
	} else {
		element.innerHTML ="对不起,你的浏览器不支持" +"XMLHTTPRequest 对象。这个网页的显示要求" +"Internet Explorer 5 以上版本, " +"或 Firefox 或 Safari 浏览器,也可能会有其他可兼容的浏览器存在。";
	}
 }
</script>
</head>
<body>
<span id="includefooter"></span>

</body>
</html>

   代码来源:http://blog.csdn.net/huangxy10/article/details/8486719

分享到:
评论

相关推荐

    asp.net知识库

    如何传值在2个页面之间 :要求不刷新父页面,并且不能用Querystring传值 Asp.net地址转义(分析)加强版 Web的桌面提醒(Popup) Using the Popup Object Click button only once in asp.net 2.0 Coalesys PanelBar ...

    asp.net+access的调查投票系统

    可以在网站任何页面内使用Html代码调用,完全无缝嵌套。 可完全还原原始投票内容,便于更细致分析。 多种分析模式,可动态导出Excel分析结果 无需另外设置,Copy实现安装,完全绿色(免虚拟目录) 产品在线演示:...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    16.2.4 为同一控件创建多个外观 16.2.5 含有模板和图片的外观 16.2.6 在主题里使用CSS 16.2.7 通过配置文件来应用主题 16.2.8 动态应用主题 16.3 标准化网站布局 16.4 母版页基础 16.4.1 简单的母版...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    ASP.NET允许Web站点为每个访问者显示独一无二的页面,而不是显示相同的静态HTML页面。ASP.NET 2.0的发布,使Web应用程序的开发又前进了一大步。这个新版本增加了大量的新功能,减少了编写常见应用程序所需的代码...

    ASP.NET.4揭秘

    6.3.1 在主题中添加多个css215 6.3.2 使用css改变页面布局215 6.4 创建全局主题219 6.5 动态应用主题220 6.6 小结225 第7章 使用用户控件创建定制控件226 7.1 创建用户控件226 7.1.1 在web配置文件中注册用户控件228...

    ASP.NET 控件的使用

    6.3.1 在主题中添加多个CSS 192 6.3.2 使用CSS改变页面布局 192 6.4 创建全局主题 195 6.5 动态应用主题 196 6.6 小结 200 第7章 使用用户控件创建定制控件 201 7.1 创建用户控件 201 7.1.1 在Web配置文件中注册...

    传统HTML页面实现模块化加载的方法

    但对于HTML就没这么幸运了,在html文件里并不具备这些功能,所以当你用纯HTML页面来写应用网站的时候估计不得不面对这些重复的工作,虽然可以通过嵌套IFrame的方式来实现,不过这种实现方式并不理想和友好。...

    ASP.NET4高级程序设计(第4版) 3/3

    16.2.4 为同一控件创建多个外观 546 16.2.5 含有模板和图片的外观 547 16.2.6 在主题里使用CSS 549 16.2.7 通过配置文件来应用主题 549 16.2.8 动态应用主题 550 16.3 标准化网站布局 551 16.4 母版页...

    ASP.NET3.5从入门到精通

    3.2.2 创建一个类和其方法 3.2.3 类成员 3.2.4 构造函数和析构函数 3.3 对象的生命周期 3.3.1 类成员的访问 3.3.2 类的类型 3.3.3 .NET 的垃圾回收机制 3.4 使用命名空间 3.4.1 为什么要用命名空间 3.4.2 创建命名...

    ASP.NET 3.5 开发大全

    3.2.2 创建一个类和其方法 3.2.3 类成员 3.2.4 构造函数和析构函数 3.3 对象的生命周期 3.3.1 类成员的访问 3.3.2 类的类型 3.3.3 .NET的垃圾回收机制 3.4 使用命名空间 3.4.1 为什么要用命名空间 3.4.2 创建命名...

    ASP.NET 3.5 开发大全word课件

    3.2.2 创建一个类和其方法 3.2.3 类成员 3.2.4 构造函数和析构函数 3.3 对象的生命周期 3.3.1 类成员的访问 3.3.2 类的类型 3.3.3 .NET的垃圾回收机制 3.4 使用命名空间 3.4.1 为什么要用命名空间 3.4.2 创建命名...

    ASP.NET 3.5 开发大全11-15

    3.2.2 创建一个类和其方法 3.2.3 类成员 3.2.4 构造函数和析构函数 3.3 对象的生命周期 3.3.1 类成员的访问 3.3.2 类的类型 3.3.3 .NET的垃圾回收机制 3.4 使用命名空间 3.4.1 为什么要用命名空间 3.4.2 创建命名...

    ASP3《高级编程》(第一部分)

    包含在Windows 2000中的Active Server Pages 3.0 (ASP 3.0)是Microsoft公司推出的又一个支持Internet的功能强大的网页制作软件包,除了继续保持其适应于各种浏览器的基本特征外,与ASP 2.0相比,功能更加强大,目前...

    ASP.NET 3.5 开发大全1-5

    3.2.2 创建一个类和其方法 3.2.3 类成员 3.2.4 构造函数和析构函数 3.3 对象的生命周期 3.3.1 类成员的访问 3.3.2 类的类型 3.3.3 .NET的垃圾回收机制 3.4 使用命名空间 3.4.1 为什么要用命名空间 3.4.2 创建命名...

    ASP3《高级编程》(第二部分)

    包含在Windows 2000中的Active Server Pages 3.0 (ASP 3.0)是Microsoft公司推出的又一个支持Internet的功能强大的网页制作软件包,除了继续保持其适应于各种浏览器的基本特征外,与ASP 2.0相比,功能更加强大,目前...

    ASP.NET2.0高级编程(第4版)1/6

     20.5.1 给页面添加多个表702  20.5.2 给SQL Server 高速缓存依赖性和 Request对象建立关联702  20.5.3 给SQL Server 高速缓存依赖性 和Cache对象建立关联703 20.6 小结706 第21章 调试和错误处理技术709 21.1 ...

    asp无限分类使用简单功能强大生成HTML自定义表单

    系统支持无限级分类、采集、生成静态HTML、ajax 自定义表单 系统标签说明: 的标签结构形如(ror标签): #{…/} 或 #{…}***{/} 内嵌标签: 标签: ##.../# 如同#{...更多、更详细的标签自己在使用中来发现哦!~~~

    零基础学ASP.NET 2.0电子书&源代码绝对完整版1

    4-01.aspx aspx页面中添加一个Lable标签。 4-02.aspx 读出Application的属性值。 4-03.aspx 读出SessionID的值。 4-04.aspx 创建Session对象。 4-05.aspx 读取传递的Session值并显示。 4-...

Global site tag (gtag.js) - Google Analytics