26
2019.2

前置和后置操作

作者: POPASP
系统会检测当前操作是否具有前置和后置操作,如果存在就会按照顺序执行,前置和后置操作的方法名是在要执行的方法前面加`before__`和`after__`,例如: ```brush:vb <% Class City '前置操作方法,注意before后是双下划线 Sub before__index var_export "before__index
" end sub sub index var_export "index
" end sub '后置操作方法 sub after__index var_export "after__index
" end sub End Class %> ``` 如果我们访问 http://serverName/index.asp?c=City&a=index 结果会输出 ```brush:xml before__index index after__index ``` 注意观察控制台的“流程” ```brush:xml 准备执行 CityAction.index 发现了前置操作 CityAction.before__index 开始执行 CityAction.before__index 执行结束 CityAction.before__index 开始执行 CityAction.index 执行结束 CityAction.index 发现了后置操作 CityAction.after__index 开始执行 CityAction.after__index 执行结束 CityAction.after__index ``` 从上可以看出,虽然没有定义index方法,但是前置操作还是会被执行,而后置操作是在index方法执行之后才会被执行的操作,所以因为没有index,所以它也不会被执行。 对于任何操作方法我们都可以按照这样的规则来定义前置和后置方法。如果当前的操作并没有定义操作方法,而是直接渲染模板文件,那么如果定义了前置 和后置方法的话,依然会生效。真正有模板输出的可能仅仅是当前的操作,前置和后置操作一般情况是没有任何输出的。 需要注意的是,在有些方法里面使用了response.end或者错误输出之类的话 有可能不会再执行后置方法了。 前置操作与后置操作在控制器有继承关系时,它的控制流程详见“控制器的继承”一节。