26
2019.2
空操作
作者: POPASP
空操作是指系统在找不到指定的操作方法的时候,会定位到空操作(`empty_`)方法来执行,利用这个机制,我们可以实现错误页面和一些URL的优化。
例如,下面我们用空操作功能来实现一个城市切换的功能。
我们只需要给City控制器定义一个 `Empty_` (空操作)方法:
控制器city.asp代码如下
```brush:vb
Class City
'从控制器的外部并不能访问到do_city方法
private sub do_city( cityName )
'这里是相关操作代码
that.d("cityName") = cityName
end sub
'把所有城市的操作解析到city方法
sub empty_
'POP_MVC.a可以获取地址栏中的a参数
Call Me.do_city( POP_MVC.a )
end sub
End Class
```
接下来,我们就可以在浏览器里面输入
```brush:html
http://serverName/city.asp?c=city&a=heijing
http://serverName/city.asp?c=city&a=shanghai
http://serverName/city.asp?c=city&a=shenzhen
```
由于City控制器并没有定义beijing、shanghai或者shenzhen操作方法,因此系统会定位到空操作方法 `empty_` 中去解析,`empty_`方法的参数就是当前URL里面的操作名,因此会看到依次输出的结果是:
当前城市:beijing
当前城市:shanghai
当前城市:shenzhen
从控制台的流程我们可以看到如下执行过程:
```brush:xml
准备执行 CityAction.beijing
没有方法 CityAction.beijing
准备执行 CityAction.Empty_
开始执行 CityAction.Empty_
执行结束 CityAction.Empty_
```
空模块的名称可以通过配置项“EMPTY_ACTION”修改。