26
2019.2
模板赋值
作者: POPASP
虽然在模板文件中可以直接获取数据库的记录或者定义变量,但是我们推荐通过控制器把变量传递给模板,做到结构上的分层,系统提供了assign、d(3.0添加)方法对模板变量赋值,作者强烈建议大家忘记assign,现在从d开始吧,至少书写起来很方便。
### that.d使用方法
格式:
```brush:html
that.d("变量名") = 值
```
that.d让分配变量更简单,如下
```brush:vb
'分配一个字符串
that.d("siteName") = "http://www.popasp.com"
'分配一个数值
that.d("number") = 123
'分配一个Dictionary对象
dim dict
set dict = D_
dict("name") = "popasp"
dict("desc") = "POPASP给大家一个留恋ASP的理由"
that.d("site") = dict
'分配一个Recordset对象
that.d("rs") = B_("user").select
```
that.d方法使用起来很方便,不管分配值是什么类型,我们都可以简单赋值,在模板或视图中通过that.d分配的变量其数据类型保持不变。
### 输出变量
在模板文件中,我们可以这样输出
```brush:html
{$siteName}
{$rs.userName} ``` ### that.assign使用方法 assign的参数有两个,一个是变量名name,一个是value。name必须是一个非空字符串。 使用方法如下: ```brush:vb call that.assign("name","popasp") ' 下面的写法是等效的 that.assign "name","popasp" ``` 如果要同时输出多个模板变量,可以使用下面的方式: ```brush:vb dim dict = D_ dict("name") = "popasp" dict("type") = "mvc" dict("desrciption") = "超级好用的asp版mvc框架" that.assign dict,"" '由于VBS的限制,第二个参数必须要输入,这里随便输个参数即可 ``` 这样,就可以在模板文件中同时输出name、email和phone三个变量。 掌握了that.d 方法就够用了,如果想了解that.assign使用,请往下看,否则可以去看别的章节了。 ### assign注意事项 assign的参数value如果是一“Recoredset”类型,那么会将“全部数据”传入。 ```brush:vb dim rs set rs = M_("post").db.field("id,title,add_time").select() that.assign "posts",rs ``` 这里的全部数据并非数据表中的全部数据,如果数据表有100万条记录,那么程序岂不崩溃,这里的全部数据是受配置项限制的 ```brush:vb ''POP_MVC.rs2dict最多可以取多少行 POP_MVC.config("RS_2DICT_LIMIT") = 2000 ``` 在默认配置中其实已经限定在了2000条,如果想获取更多,可以修改这个配置项。
{$rs.userName} ``` ### that.assign使用方法 assign的参数有两个,一个是变量名name,一个是value。name必须是一个非空字符串。 使用方法如下: ```brush:vb call that.assign("name","popasp") ' 下面的写法是等效的 that.assign "name","popasp" ``` 如果要同时输出多个模板变量,可以使用下面的方式: ```brush:vb dim dict = D_ dict("name") = "popasp" dict("type") = "mvc" dict("desrciption") = "超级好用的asp版mvc框架" that.assign dict,"" '由于VBS的限制,第二个参数必须要输入,这里随便输个参数即可 ``` 这样,就可以在模板文件中同时输出name、email和phone三个变量。 掌握了that.d 方法就够用了,如果想了解that.assign使用,请往下看,否则可以去看别的章节了。 ### assign注意事项 assign的参数value如果是一“Recoredset”类型,那么会将“全部数据”传入。 ```brush:vb dim rs set rs = M_("post").db.field("id,title,add_time").select() that.assign "posts",rs ``` 这里的全部数据并非数据表中的全部数据,如果数据表有100万条记录,那么程序岂不崩溃,这里的全部数据是受配置项限制的 ```brush:vb ''POP_MVC.rs2dict最多可以取多少行 POP_MVC.config("RS_2DICT_LIMIT") = 2000 ``` 在默认配置中其实已经限定在了2000条,如果想获取更多,可以修改这个配置项。