26
2019.2

一般变量赋值

作者: POPASP
一般变量赋值 格式:`{:$varName=expression}` ### 标量赋值(数值、字符串、布尔值等) ```brush:html {:$varName="popasp.com"} {//变量赋值} {$varName} {//变量输出} ``` ### 模板变量赋值的本质 变量赋值时,是将右侧的运算结果赋值给左侧的“变量”。左侧的“变量”是POP_MVC.tpl_vars这个Dictionary对象的一个键名,变量赋值本质是给POP_MVC.tpl_vars分配了一个键值对,所以在输出时要注意“变量”名的大小写。我们也可以通过表达式输出来显示分配的值。 在控制器中,我们使用了that.d来进行赋值,模板赋值与使用that.d赋值本质是一致的。 ### Dictionray变量赋值 ```brush:html {:$dict = D_} {:$dict.userName = "popasp"} {:$dict.groupQQ = "124648143"} ``` 或者 ```brush:html {:$dict = D_} {:$dict("userName") = "popasp"} {:$dict("groupQQ") = "124648143"} ``` 输出Dictonray对象的变量时,不能这样使用 ```brush:html {$dict} ``` 因为它是一个Dictionary对象,不能直接进行字符串的拼接。应该这样使用 ```brush:html {$dict.userName} {$dict.groupQQ} ``` ### 变量名称可以是汉字 变量名可以是汉字,这个好消息可能再次让你惊艳于POPASP的人性化设计。是的,POPASP就是通过强大的巧妙设计,给asper一个留恋asp的理由。 ```brush:html {:$变量="www.popasp.com"} {:$dict = D_} {:$dict.网址="www.popasp.com"} {:$dict("网址")="www.popasp.com"} ``` ### 变量输出 在模板中分配变量,是为了利用它,在模板中输出变量是我们经常要处理的一项工作。 除了 ```brush:html {$变量名} ``` 这样的常规使用外,在理解了其实质为POP_MVC.tpl_vars的属性后,也可以使用原生的方法进行输出,如下所示: ```brush:html {=POP_MVC.tpl_vars("varName")} {//popasp.com} ``` 也可以通过`V_`函数来显示分配的值 ```brush:html {=V_("varName")} {//popasp.com} ``` ### 采用函数进行变量赋值 变量赋值右侧表达式是灵活的,可以是在asp中书写的任意表达式,当然也可以是函数,举例: ```brush:vb {:$file_content=POP_MVC.file_get_contents(POP_MVC.mvc_dir & "popasp_mvc.class.asp" )} {//获取文件内容} {$file_content} {//输出文件内容} ``` ### 赋值Recordset对象 ```brush:html {:$row=B_("user").where(1).find} {:$rs=B_("content").top(10).select} ``` 变量赋值是灵活多样的,可以像asp原生态那样随意赋值,不仅可以分配字符串、数字、布尔值,也可以分配使用set的对象,在模板中使用时,不要再额外的使用set,这样的设计也是为了开发者的方便考虑。 ```brush:html {:$article = B_("content").getRow()} {//从文章数据表中取出一条记录,Dictionary对象} {$article.Title} {//如果表中的字段Title首字母为大写,这里也要将T大写,因为article是一个Dictionary对象} {$row = B_("content").field("TITLE").find()} {//从文章数据表中取出一条记录,Recordset对象} {$row.title} {//由于row是一个Recordset对象,取字段值不需要区分大小写,这里也不需要区分大小写。} {$row.0} {//错误的写法。采用数字的写法在这里是不能被解析的,并报错: [POPASP Warning] [不能正确解析变量“row.0”,变量未分配或变量名不正确(请注意大小写)]} {$article} {//错误的写法。由于是对象,不能被输出。并报错:输出 {$article} 时发现错误:错误的参数个数或无效的参数属性值]} {=js_encode($article)} {//如果是出于查看的目的,我们可以用表达式输出$article。} ``` ### 不能被解析的字符 在一般变量赋值时`{:$varName=expression}`,expression表达式中不能含有“{”、“}”、“?”。含有?符号,则会被当成三元赋值或二元赋值进行解析。如果不能避免“?”的出现,可以使用`__WH__`或`__WHN__`(N代表个数)来代替。 ```brush:html {:$temp = "拥有3个__LJ3__,4个__RJ4__,和5个__WH5__"} {$temp} ``` 结果为“拥有3个{{{,4个}}}},和5个?????”