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

时间:2015-07-14 18:29:28

标签: asp-classic master-pages

我是传统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 %>

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

一旦你包含了包含变量的页面,就可以将它们视为当时和那里创建它们(因为从某种意义上说, 是在那时创建的,至少从服务器& #39; s观点)。你需要在范围 [读取:将它们外面 sub] 中变量全局化,除非你想要在调用BodyContent子时列出所有这些内容。 (就我个人而言,我不明白这一点,但有些人对全球变量过分不合理。)

<% 
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%>

尝试这样的结果是将包含templateA和templateB。如果您需要条件包含,请使用FileSystemObject来阅读相应模板的内容,然后使用Execute来执行它。