日期:2014-05-17  浏览次数:20677 次

如何将一个HTML页面嵌套在多个动态页面(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"-->