CSP
文档可能包含在提供页面时(即在运行时)在 CSP
服务器上运行的表达式。此类表达式使用 #(expr)#
指令分隔,其中 expr
是有效的 ObjectScript
或 Basic
表达式(取决于页面的默认语言;运行时表达式中使用的语言必须与 CSP
文档的默认语言匹配。)
注意:请注意,#(expr)#
指令支持名称间接,不支持参数间接。
例如,包含以下内容的 CSP
文档:
Two plus two equals <b>#(2 + 2)#</b>
在生成的类中生成以下代码:
Write "Two plus two equals ", (2 + 2), "",!
反过来,它将以下内容发送到 HTTP
客户端:
Two plus two equals <b>4</b>
运行时表达式示例;
The answer is <b>#(answer)#</b>.
Your current balance is: <b>#(account.Balance)#</b>.
%ResultSet
中的字段在对象中<table>
<csp:while condition="result.Next()">
<tr><td>#(result.Get("BookTitle"))#</td></tr>
</csp:while>
</table>
%request
对象的 URL
参数<table bgcolor='#(%request.Data("tablecolor",1))#'></table>
运行时表达式可以位于 CSP
文档中 #(expr)#
结构可用作合法 HTML
的任何位置。这包括在 HTML
文本中,作为 HTML
元素属性的值,或在客户端 JavaScript
代码的定义中。
如果运行时表达式的值包含任何特殊字符(例如 < or >
、尖括号),需要对它们进行转义以向 HTTP
客户端发送正确的转义序列。要转义它们,请在类中使用 %CSP.Page
提供的转义方法之一。下面的示例显示了 EscapeHTML
类方法。运行该方法时,object.Description
中存在的任何需要转义的字符都将替换为其 HTML
转义序列。
Description: <b>#(..EscapeHTML(object.Description))#</b>.
如果在 HTML
属性值中使用运行时表达式,则在运行时表达式中找到的任何 HTML
实体都将转换为它们所代表的字符,然后再转换为可执行代码。例如:
<font size=#(1 > 0)#>
在生成的类中生成以下代码:
java
Write "",!
如果需要的不仅仅是一个简单的表达式在页面内的 CSP
服务器上运行,可以使用 标记放置要在
CSP
服务器上运行的代码行。与运行时表达式一样,可以将运行时代码用于各种目的。用于运行时代码的语言(由 标记的
LANGUAGE
属性指定)必须与 CSP
文档的默认语言匹配。
例如,包含以下内容的 CSP
文档:
<ul>
<script language="cache" runat=server>
For i = 1:1:4 {
Write "- Item "
,i,!
}
</script>
</ul>
在生成的类中生成以下代码:
Write ""
,!
For i = 1:1:4 {
Write "- Item "
,i,!
}
Write "",!
反过来,它将以下内容发送到 HTTP
客户端:
<ul>
<li>Item 1
<li>Item 2
<li>Item 3
<li>Item 4
</ul>