26
2019.2

定义控制器

作者: POPASP
每个模块都应该对应一个控制器文件,应用开发中的一个重要过程就是给不同的控制器定义具体的操作。一个应用如果不需要和数据库交互的时候可以不定义模型类,也可以不用定义Action控制器,控制器一般位于项目的Controller目录下面。 控制器的定义非常简单,例如: ```brush:vbscript Class User ``` 控制器文件的名称是Use.asp,需要注意的是2.3版本之前使用的名称是UserAction.class.asp,目的同样是为了简化操作。 如果我们要执行下面的URL ```brush:xml http://localhost/App/user_add.asp ``` 则它对应的是`User`控制器的`add`方法 因此增加一个add操作方法就可以了。 ```brush:vbscript <% '用户模块 Class User ' 定义一个add操作方法 public sub add() '准备相关数据 end sub end Class %> ``` 操作方法必须定义为Public类型,否则会报错。方法可以是Sub过程也可以是Function函数,但不能有参数。 尽管从2.3版本之后控制器文件名与控制器定义得到了极大的简化,但是本质上并没有太大的变化,因为框架并不会直接调用用户自定义的控制器,而是先将控制器代码重写后再进行调用。比如上面定义的User控制器,实际上重写后的代码如下: ```brush:vbscript <% Class [UserAction] Public that,parent,son ' 定义一个add操作方法 public sub add() '准备相关数据 end sub end Class %> ``` 这个重写后的类可以在Runtime/Class/UserAction.class.asp中可见。 这里我们要说明一下that属性,它是POPASP_CONTROLLER的实例化。它的常用方法有 * Verify * u * Assign * expired * isGet * isPost * isAjax * isSelfOrigin * getReferer * getOrigin * Redirect * Get * Form * server * AjaxReturn * Error * Success * Err * Suc * rs2dict * Check * asp_check * js_check * js_auto 现在我们先来学习几个常用方法 ### that.Get ### 功能:与Request.QueryString作用相同,用来获取地址栏中的参数,其实就是`Request.QueryString`的一个简写。 ```brush:vbscript '等价于Request.QueryString,也等价于POP_MVC.Get("") that.get("") '等价于Request.QueryString("name"),也等价于POP_MVC.Get("name") that.get("name") ``` ### that.Form ### 功能:与Request.form作用相同,用来获取form表单提交的数据,其实就是`Request.form`的一个简写。 ```brush:vbscript '等价于Request.Form,也等价于POP_MVC.Form("") that.Form("") '等价于Request.Form("name"),也等价于POP_MVC.Form("name") that.Form("name") ``` ### that.Server ### 功能:与Request.ServerVariables作用相同,用来获取系统变量,相当于`Request.ServerVariables`的简写。 ```brush:vbscript '等价于Request.ServerVariables("SCRIPT_NAME"),并没有POP_MVC.Server这个方法 that.Server("SCRIPT_NAME") ``` ### that.Redirect ### 功能:实现页面的跳转,类似Request.redirect ```brush:vbscript '等价于Request.redirect("login.asp") that.redirect("login.asp") '等价于Request.redirect("http://www.popasp.com") that.redirect("http://www.popasp.com") '返回浏览器的上一个页面 that.redirect("") ```