乘风原创程序

  • ASP中利用execute实现动态包含文件的方法
  • 2020/9/14 13:30:24
  • 在ASP中include文件形如 #include file=function.asp,这是最简单也是最常用的包含文件方法,青岛星网下面跟大家分享:根据不同的需求,包含不同的文件的函数。

    ASP动态包含文件的实现函数

    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("***.asp")'注意,这里的include是函数名哦,不要搞混哦。

    下面是其他网友的补充大家参考一下

    ASP中,include file/virtual 是优先脚本代码处理的,所以无法使用include动态包含ASP文件。我们可以使用Execute函数动态执行所需代码。

    方法:

    Execute(ASP代码)

    例子:(vbCrLf为换行符)

    Execute("Class clsAbc"&vbCrLf&"Public Function output"&vbCrLf&"Response.Write 123"&vbCrLf&"End Function"&vbCrLf&"End Class") 

    Dim objAbc 
    Set objAbc = New clsAbc 
    objAbc.output 
    Set objAbc = Nothing 

    使用时可以用从文件或数据库读取出ASP代码再执行,注意,所执行的代码中不应包含<%和%>
    注意不要与Server.Execute混淆,Server.Execute参数为ASP虚拟路径,并且使用该函数不但不能动态声明Class类,甚至不可以给主程序段的变量赋值。

    例子:

    main.asp

    Dim strAbc,objAbc 
    strAbc = "Test" 
    Server.Execute("sub.asp") 
    Response.Write strAbc 
    Set objAbc = New clsAbc 
    objAbc.output 
    Set objAbc = Nothing 
    

    sub.asp

    strAbc = "Execute" 
    Class clsAbc 
     Public Function output 
     Response.Write "Class" 
     End Function 
    End Class 

    执行main.asp后,将仅输出Test,而objAbc则不能实例化。