优内建站网,专业建站,企业建站,免费建站,智能建站,个人建站!
主营企业建站,seo优化,手机网站,微信网站开发等业务!>> 繁体中文
用户名: 密 码: 验证码:    
企业建站,专业建站,模板建站,智能建站
 您现在的位置:首页 >> 网络编程 >> 详细内容>>        【字体:  】【颜色: 绿

如何实现真正的动态包含

在百度搜索关于“如何实现真正的动态包含”的内容

在谷歌搜索关于“如何实现真正的动态包含”的内容

买空间、服务器就上威客主机网(VK163.COM) 虚拟主机评测+IDC导航=威客主机之家 标志设计
[内容提要] 一、动态包含文件本文假定读者已经熟悉HTML、ASP和ActiveX对象的使用。在这里,我们将使用FileSystemObject和TextStream对象实现“动态包含”功能,即实现动态的include指令。通常我们所设想的动态包含是:用一个变量保存待包含文件的名字,然...

作者: 优内科技  来源: 优内科技  驻站日期:2008/11/5 【 加入收藏 】 【 打印此页 】 【 关闭

一、动态包含文件
本文假定读者已经熟悉HTML、ASP和ActiveX对象的使用。在这里,我们将使用FileSystemObject和TextStream对象实现“动态包含”功能,即实现动态的include指令。
通常我们所设想的动态包含是:用一个变量保存待包含文件的名字,然后把该变量传入include指令。相信我们之中的许多人都曾经想要在自己的ASP应用中使用动态包含的文件,但最终却发现服务器并不直接支持动态包含。
首先应该搞清楚下面的代码是无法实现动态包含的:  
<%
' 声明用来保存文件名字的变量
Dim MyFile
  
' 在变量中保存包含文件的名字
MyFile = Request("SomeFileName")
  
' 将保存有文件名字的变量传递给include指令
%>
<!--#include file=<%=MyFile%>-->
  
上面的代码之所以不能实现动态包含,是因为ASP对include指令的处理早于脚本代码。如果我们执行上述代码,系统将提示错误说找不到包含文件。  
使用包含文件的动机之一是让它作为静态HTML内容的容器,然后通过include指令来引用这个文件。包含文件中的静态HTML通常不作改动,比如标准的页头和页脚。但有些时候我们却需要根据用户的输入或其他条件提供不同的内容。为了不至于为每一种可能的情形分别创建完整的页面,“动态包含”文件这一概念就出现了。然而,正如上面说明的,表面上看起来最为合理的实现方法其实是没有用的。  
为了解决这个问题,我们可以用FileSystemObject对象读入目标包含文件并保存到字符串变量,然后将这个字符串变量插入到发送给客户浏览器的页面。下面这个getFileContents函数帮助实现这个处理过程,它读入参数中指定的文件,然后将其内容作为字符串返回。  
<%
  
' 把文件名字传递给函数
Function getFileContents(strIncludeFile)
Dim objFSO
Dim objText
Dim strPage
  
' 初始化FileSystemObject对象
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
  
'打开文件并把它传递给TextStream对象(objText)。Server对象的
'MapPath函数用于获得文件的物理路径
Set objText = objFSO.OpenTextFile(Server.MapPath(strIncludeFile))
  
'读取并以字符串形式返回文件内容
getFileContents = objText.ReadAll
  
objText.Close
Set objText = Nothing
Set objFSO = Nothing
End Function
%>
使用这个函数即可实现动态地包含文件。首先,我们读入主页面(即包含页面布局和所有静态内容的模板文件)并把它保存到字符串变量;然后再读入包含文件并保存为字符串变量;最后,把保存包含文件内容的变量插入到主页面的内容之中。  
二、应用实例  
首先我们来看一下模板文件。下面的代码包含了一个HTML注释“<!-- INCLUDE FILE HERE -->”,我们将用包含文件的内容来取代这个HTML注释。  
<html>
<body>
<h2>欢迎到访!</h2>
<table width="500" border="1">
<tr>
<td>
<!-- INCLUDE FILE HERE -->
</td>
</tr>
</table>
</body>
</html>
下面再来看一下本例所用的几个包含文件。第一个包含文件是默认的包含文件。默认包含文件是一个表单,允许用户选择打开其他三个包含文件中的其中一个。注意这个表单没有指定“action”属性,这表示表单将提交给它自己(即重新打开dynamicin3.asp)。  
<!-- BEGIN DEFAULT INCLUDE -->
<form method="post">
<h3>请选择一个您希望打开的文件</h3>
<p>
<select id=cboFile name=cboFile>
<option value="includefile1.inc">文件 #1</option>
<option value="includefile2.inc">文件 #2</option>
<option value="includefile3.inc">文件 #3</option>
</select>
<input type="submit" value="Submit">
</p>
</form>
<!-- END DEFAULT INCLUDE -->
为简单计,其他三个包含文件的内容都很简单:  
<!-- BEGIN INCLUDE FILE #1 -->
<h2 style="color:red">文件 #1 </h2>
<br>
<a href="dynamicinc3.asp">返回默认页面</a>
<!-- END INCLUDE FILE #1 -->
  
<!-- BEGIN INCLUDE FILE #2 -->
<h2 style="color:green">文件 #2 </h2>
<br>
<a href="dynamicinc3.asp">返回默认页面</a>
<!-- END INCLUDE FILE #2 -->
  
<!-- BEGIN INCLUDE FILE #3 -->
<h2 style="color:blue">文件 #3 </h2>
<br>
<a href="dynamicinc3.asp">返回默认页面</a>
<!-- END INCLUDE FILE #3 -->
下面是dynamicinc3.asp页面的代码及其说明。  
<%
'-------------------------------------------------------------
'getFileContents函数放到ASP文件的最前面
'-------------------------------------------------------------
  
'声明存放主页面和包含文件内容的变量
Dim strMain, strInclude
  
'读取主页面的内容并保存到strMain变量
strMain = getFileContents("maintemplate.inc")
  
'检查cboFile选择框是否已经选择。如是,读取所要求的文件
'否则,读取默认的包含文件
If Request.form("cboFile") = "" Then
strInclude = getFileContents("includedefault.inc")
Else
strInclude = getFileContents(Request.form("cboFile"))
End If
  
'把合适的包含文件读入到变量strInclude之后
'使用Replace函数将它插入到strMain文件
strMain = replace(strMain,"<!-- INCLUDE FILE HERE -->",strInclude)
  
'将结果发送到客户端
Response.Write strMain
  
%>
本例能够正常运行,而且从效果上看达到了动态包含文件的目的。但它没有使用include指令,而是使用了FileSystemObject来替代。  
运行这个例子,右击页面并查看源文件,可以发现页面中插入的是默认的包含文件。然后,从选择列表选择一个包含文件。提交表单重新装载页面之后,再查看页面的源文件,可以发现此时插入的是刚才选择的包含文件。
当我们想要分离页面的布局和它的内容时,这种技术是很有用的。我们可以创建描述网站布局的模板,再以包含文件形式制作网站的内容,最后使用ASP就可以方便地把两者结合起来! 

添加到QQ书签 百度收藏 订阅到抓虾 添加到鲜果  新浪ViVi  365Key网摘  天极网摘  我摘  和讯网摘  yahoo  收藏到收客网  Digbuzz我挖网  添加到饭否  挖客  添加到google  

   【回到顶部】 【返回文章列表】 编辑:优内科技
⊕ 上一篇:用ASP建立网站地图
⊕ 下一篇:asp编程:召开自己的新闻发布会
  相关新闻
返回首页 | 设为首页 | 添加收藏 | 关于我们 | 联系我们 | 企业文化 | 合作伙伴 | 诚聘英才 | 网站报价 | 企业资质 | 网站地图
邮箱登陆 E- mail:master@cck5.com 点击这里给我发消息 客服专员 QQ:310203268 点击这里给我发消息 技术咨询 QQ:22071287点击这里给我发消息 代理备案 QQ:529631515
丰富的网站建设经验,专业提供网站建设、网站制作、网页设计服务,专业设计,真诚服务,不满意不收费!
Copyright 2008 - 2025 cck5 Inc. All Rights Reserved 优内建站网络科技公司
本站部分资源来自网络,如有侵犯您的版权,请告之,我们将即刻删除!QQ:310203268
主要业务:网站建设企业建站专业建站智能建站SEO优化微信建站手机建站
本站ICP备案号:浙ICP备11019299号 中国电信增值ICP经营许可证
不良信息举报中心 江西网警 信息产业部门备案 企业法人营业执照
 
扫优内微信二维码
“码”上有惊喜