在渲染文档的结果之前设置变量值

时间:2016-03-10 11:30:09

标签: html vbscript asp-classic

我认为这是不可能的,但只是问一下,在调用它之后,经典ASP中有没有办法设置变量值? 一个更明确的例子:

<img src="<%=imgSrc%>" alt="An image" />
<% imgSrc="animage.jpg" %>

或另一个,但只是解释:

<img src="<%=imgSrc%>" alt="An image" />
<% ASP BEFORE RENDER
   imgSrc="animage.jpg"
%>

任何提示都会很好;)

2 个答案:

答案 0 :(得分:1)

我认为没有办法做到这一点。然而,这是一个非常糟糕的做法。您应该始终在顶部声明变量并在使用之前为它们赋值。

答案 1 :(得分:1)

ASP引擎以线​​性方式处理ASP文件。

在上面的例子中

<img src="<%=imgSrc%>" alt="An Image" />` 

已经写入缓冲区,因此之后发生的任何事情都不会影响该行的结果。

唯一的例外是Sub Procedure (虽然Sub Procedure中定义的值不一定返回到正在处理的行)和可以在任何地方定义的函数调用(顶部底部等)及其内容将在将行写入缓冲区之前处理,如

<img src="<%= GetImage(...) %>" alt="An Image" />` 

会起作用。

要对此进行扩展,您应该使用Function来保证正在处理的行中包含的值Sub无法执行此操作,因为它不会返回任何内容(从技术上讲,您可以使用SubByRef返回值,但即使这样也不适用于此方案,因为在Sub值之前必须首先调用ByRef访问)

使用上面的GetImage()示例

'This function in this form isn't useful at all but it
'demonstrates the technique.
Function GetImage()
  Dim imgSrc : imgSrc = "animage.jpg"
  GetImage = imgSrc
End Function