如果页面是默认的,则包含if if not default

时间:2016-02-24 19:05:29

标签: html vbscript asp-classic ssi

我已经阅读过类似的问题,但似乎没有一个问题适合我。

我有一个asp网站,我认为经典(甚至不知道经典和网络之间的差异),几页都有asp扩展,有些html包括,其中一个是我想要的滑块仅在主页(default.asp)中显示,如果不是默认值,则在标记中添加div。

我知道以下是错误的,但只是为了更好地解释我的需要。

<%
if page == default.asp
include file="slider.html"
if page != default.asp
<div class="spacer-top"></div>
%>

2 个答案:

答案 0 :(得分:3)

与ASP-classic-land中的许多前辈一样,你想要的是有条件的包含,而你遇到的问题是经典ASP不做有条件的包含。 (之所以在解析页面上的任何脚本之前很久就处理#include指令。)

有各种解决方法涉及Execute或其他危险的错误指令;搜索“asp conditional include”,你会找到比你讨价还价更多的东西。但是,在您的情况下,将滑块显示包含在您可以调用或不调用的子例程中可能更简单。

Slider.html:

<%
Sub DisplaySlider()
    'code to display the slider (probably JavaScript, I'm guessing?)
    %>
    <script ...>
    </script>
    <%
End Sub
%>

其他页面:

<!-- #include virtual="/slider.html" -->
<%
scriptname = Request.ServerVariables("Script_Name")
If InStr(scriptname, "default.asp") > 0 Then
    DisplaySlider
Else
    Response.Write "<div class='spacer-top'></div>"
End If
%>

答案 1 :(得分:1)

玛莎砰砰直跳。

为了增加她的答案,我觉得我应该指出系统设计在这里发挥作用。尝试将模块保持小巧简洁,将其功能定位到应用程序要求的特定方面。例如:

  • 一个来处理您的数据层
  • 一个处理更高级表单处理的人
  • 一个人来处理 blah

你明白了。

另一个想法是在global.asa中加入常用功能,以便它们可以立即供应用于您应用中的所有模块。