2008年5月20日星期二

ThinkASP MVC

-- 如何动态调用? Server.Execute and Execute
让你了解ASP中Server.Execute()及Execute的用法

首先说明一下,Server.Execute()和Execute是不同的,前者是ASP内置对象,后者是VB语句。

1.执行过程
Dim strSubName
strSubName="Print"
Execute strSubName
Sub Print()
Response.Write Now
End Sub

2.执行带参数的过程
Dim strSubName
strSubName="Print("""&Now&""")"
Execute strSubName
Sub Print(str)
Response.Write str
End Sub

3.动态包含文件
Server.Execute("xxx.asp")

server 是 ASP 中的一个内置对象,server.Execute 有一个方法为 Execute。

用法是:server.Execute(path)

它和 include 包含文件的功能很相似,不同之处是“包含文件”与“被包含文件”之间在变量和函数上是相互隔绝的。

比如两个页面文件:
a.asp
<%
dim c
c = "1"
response.Write(c)
server.Execute("b.asp")
response.Write(c)
%>

b.asp
<%
dim c
c = "2"
response.Write(c)
%>

显示结果为:121

两个页面都定义了变量 c,但不会报错说名称重定义,因为两个文件之间在变量和函数上是相互隔绝的,但如果在 a.asp 中是使用 include 包含 b.asp,便会报错说名称重定义。

注意:b.asp 同样可以“享用”客户端通过 POST 或 GET 提交给 a.asp 的值。

server.Execute 也可以形成递归,但递归达到一定的次数后不会像 server.Transfer 一样自动终止,而是报错并终止。

模板的实现参考
http://www.jb51.net/article/22.htm
思路:asp文件进行常规的逻辑处理,运算, 不用管显示层,当然需要显示的变量需要和显示层结合(PHP也一样),在模板文件中用<%%>直接控制变量的显示和逻辑的控制,不显示的逻辑控制符用html注释符注释掉,当然,不注释也是可以的.这样在ASP文件的最后""就实现了模板和ASP文件的结合,实现了代码和表现层的分离,这里并没有用ASP去Load模板,然后替换,浪费不必要ASP资源.这些处理全部都省去了。你会发现写ASP文件变得更加方便,因为你再也不需要在其中控制替换,逻辑显示的行为。在 ASP中直接执行肯定比替换要来得迅速和稳定.况且,加载模板的时候你必须还要加载一个组件.
写到这里,你也许明白了这种模板的精髓了,它只是一种设计模式,不是一个用模板类来处理的模板引擎。

没有评论: