在经典中将变量从内容页面传递到母版页 ASP

Pass Variable from Content page to Master Page in classic ASP

我是经典 ASP 的新手,我正在尝试创建一个带有可变占位符的母版页,并使用在内容页面上工作的变量填充该页面上的信息。

我的母版页如下所示:

<html>
<head>
  <title>Template Loaded Properly</title>
</head>
<body>
  <% call BodyContent %>

  <span>Title: <% //place title here %></span>
  <span>Content: <% //place content here %></span>
</body>
</html>

内容页是这样的:

<!--#include virtual="/templates/TEMPLATE.html" -->

<% sub BodyContent %>
var Title = "This is the title"
var Content = "Here goes some content"
<% end sub %>

任何帮助将不胜感激。

一旦包含变量的页面,您就可以将它们视为当场创建的(因为从某种意义上说,它们 是当场创建的 ,至少从服务器的角度来看)。您 do 需要使变量在范围 中成为全局变量[阅读:将它们调暗 outside the sub],除非你想在调用你的 BodyContent sub 时列出所有这些。 (就我个人而言,我不明白这一点,但有些人对全局变量无缘无故地过敏。)

<% 
dim Title, Content
sub BodyContent
    Title = "This is the title"
    Content = "Here goes some content"
end sub 
%>
<body>
   <% call BodyContent %>

   <span>Title: <%=Title%></span>
   <span>Content: <%=Content%></span>
</body>

但有一个警告:包含文件在代码处理之前很久就被处理了,因此您不能改变包含的文件。换句话说,不要这样做:

<%If x = a Then%>
<!-- #include virtual="/templateA.inc" -->
<%Else%>
<!-- #include virtual="/templateB.inc" -->
<%End If%>

尝试类似操作的结果是模板 A 和模板 B 都将包含在内。如果您需要条件包含,请考虑使用 FileSystemObject 来读取相应模板的内容,然后使用 Execute 来执行它。