[讨论] 一直困扰我的问题,郁闷!
我常遇到的包含文件的问题,自己写了一个常用控件,需要多个页面调用(如最新的文章列表),需要调用到数据库连接文件Conn.asp,但有的使用到该控件的页面已经把Conn.asp文件包含了进来,有的又没有包含进来,我希望该控件能够自己判断页面是否已经包含了Conn.asp文件从而动态加载Conn.asp。各位有何好的解决方案,进来讨论讨论^^ 问题点数:0、回复次数:5Top
1 楼gshope(北京.Net)回复于 2003-12-03 10:00:55 得分 0
在conn.asp里随便定义一个变量就是了,aa="OK",然后在调用的页面判断aa是否等于"OK",是的话就是已经包含了,否则就是没包含。Top
2 楼angelheavens(龙辉)回复于 2003-12-03 10:02:31 得分 0
<%
'假设对象创建名为conn
If IsObject(conn) Then
Response.Write("Object is created!!!")
Else
'call conn.asp
End If
%>Top
3 楼Kidwind(风儿)回复于 2003-12-03 10:03:16 得分 0
不行的,如果已经包含会出现名称重定义的错误,因为包含是在程序执行前Top
4 楼Kidwind(风儿)回复于 2003-12-03 10:06:08 得分 0
to angelheavens(龙辉)
我只是做个假设,那如果我有很多的函数Conn.asp里定义呢Top
5 楼possible_Y(████本人签名需要刮开,方可看到 )回复于 2003-12-03 11:25:29 得分 0
根据需要动态include不同的文件 qiushuiwuhen(原作)
受<! #include file="filename.asp" --> 宏限制
必须存在该文件并且会预先编译(不管前面是否加以条件)
经常有这样的要求,根据不同的需求要求include不同的文件
如各个人的不同设置,所以要求能动态include文件。
代码如下:
Function include(filename)
Dim re,content,fso,f,aspStart,aspEnd
set fso=CreateObject("Scripting.FileSystemObject")
set f=fso.OpenTextFile(server.mappath(filename))
content=f.ReadAll
f.close
set f=nothing
set fso=nothing
set re=new RegExp
re.pattern="^\s*="
aspEnd=1
aspStart=inStr(aspEnd,content,"<%")+2
do while aspStart>aspEnd+1
Response.write Mid(content,aspEnd,aspStart-aspEnd-2)
aspEnd=inStr(aspStart,content,"%\>")+2
Execute(re.replace(Mid(content,aspStart,aspEnd-aspStart-2),"Response.Write "))
aspStart=inStr(aspEnd,content,"<%")+2
loop
Response.write Mid(content,aspEnd)
set re=nothing
End Function
使用范例:
include("youinc.asp")
这样就可以:
if aa<>"OK" then
include("youinc.asp")
end if
Top




