服务器端注释:ASP Classic中<%-- --%>的等效写法是什么?

20

ASP Classic中等同于<%-- --%>的是什么?

我需要修改一个传统的ASP程序,我想注释掉一段HTML代码:

<td>
    some table cell I'd like to comment out, including
    some <%= inlineServerSideVBScriptExpressions() %>
</td>

将所有内容包裹在 <%-- ... --%> 中,就像我在ASP.NET中所做的那样,这种方法不起作用,并会导致编译错误"Expected statement"。HTML注释<!-- ... -->也不是一个选项,因为内联的ASP表达式将被计算并失败。

10个回答

29

试试这个:

<!-- METADATA  
  Your comments here
-->

METADATA 指示 ASP 处理器这是一条注释,不需要发送给客户端。


现在听起来很有希望 - 我明天会试一试。那个东西有文档吗?我尝试过谷歌搜索 asp "METADATA directive",找到了很多参考资料,但没有“官方规范”... - Heinzi
4
运作得很好!但是,您确定这总是被解释为注释(即被忽略)吗?我在网上找到的使用METADATA的示例总是基于跟随METADATA后面的内容做一些事情(加载一些COM组件等)。我发现了这个链接:http://msdn.microsoft.com/en-us/library/ms525307.aspx,它似乎暗示METADATA的主要目的是加载库。因此,我想知道将其用于"注释掉"东西的可能性是否只是(意外的?)副作用... - Heinzi
1
我不确定我同意这个说法 - “METADATA 表示这是一个不需要发送到客户端的注释。” 我认为你在那里使用了一点诗意许可,我认为它更多是 TypeLibrary Declaration 机制的一个愉快的副作用。 - user692942
2
这似乎是一种非常危险的注释专有服务器端代码的方式。封闭标记会暗示,除了处理“METADATA”指令的任何内容之外,这只是一个普通的HTML注释。 - le3th4x0rbot
1
@FrankBailey 这绝对不是 ASP Classic 的一部分,但似乎存在于 IIS 堆栈的更高层。不能保证它始终有效,因为解析它的东西很可能会改变。不能保证它在所有版本的 IIS 上都能同样地工作。TypeLibrary 为确定所有内容是否无效而努力了多少?如果某些内容是有效的呢?如果 METADATA 什么也不做,那么它只是一个 HTML 注释,在测试中很容易被忽略,但仍然会在服务器响应中保留,即使是轻微好奇的人也会注意到。 - le3th4x0rbot
显示剩余3条评论

20

在ASP Classic中没有“内置”的块注释方式。您需要在每行不想运行的代码前面加上一个'


1
...并且在该注释块中所有出现的%>之间加上空格。这就是我目前正在做的事情;可惜没有更优雅的解决方案。 - Heinzi
接受,因为你的第一句话回答了我的问题。(虽然不是我希望得到的答案,但还是...) - Heinzi
3
实际上,只有VBScript没有块注释机制,很容易将ASP与VBScript混淆,因为人们经常说“ASP”,当他们实际是指“在ASP页面中的VBScript”。Javascript使用/* */,HTML使用<!-- -->。ASP脚本处理程序也有一个注释机制,详见我下面的回答。 - AnthonyWJones

8

这是我如何轻松注释掉整个混合代码块的方法:

<% If False Then %>
  <html stuff></html stuff>
  <% more asp stuff %>
<% End If %>

如果我需要经常做这件事情,我会为我的电脑制作一个宏来通过热键完成此操作。

2
那是一个聪明的小解决方案,解决了一个烦人的问题。除了不得不再次使用经典 ASP 的问题之外... - Michael A

6

撇号式注释在VBScript中得到支持,它们可能也适用于此处。

这些注释在脚本处理时被删除,不会发送到浏览器。

<%
   'This line and the following two are comments.
   'The function below does something ineluctable.
   'So don't mess with it.
   SomeFunction()
%>

这是一个关于IT技术的翻译内容:

这里有一份相关资料


1
+1。是的,这是我目前正在使用的解决方法。我希望有一些块级结构,例如<%——... - Heinzi
1
@Heinzi 很有可能一个文本编辑器可以帮助你批量添加/删除注释。 - le3th4x0rbot

4
这就是源代码控制的作用。当你需要时,只需在提交时删除代码并进行适当标记,这样您就可以稍后找到该代码段。

总的来说,我同意,并且我们在我们(目前基于 .net 的)项目中使用版本控制。出于各种原因,这对于这个老项目来说不是一个选项。 - Heinzi
1
是的,没有人会将他们的ASP经典项目切换到版本控制。 - le3th4x0rbot
2
@BaileyS 我把所有的经典 ASP 项目都通过 SVN 存储库运行,再也不会回头了。 - user692942
2
@Lankymart,大约三个月前我把我的整个代码库放到了Mercurial中。你是100%正确的,我正在承认我的错误。 - le3th4x0rbot

3

@Heinzi:由于您无法使用Joel Coehoorn的出色解决方案,您也可以使用类似以下内容的解决方案:

<%
Dim blnDebug : blnDebug = True

If NOT blnDebug Then
    ' Display mixed HTML/ASP code
%>
HTML, HTML .. <%=someASPfunction() %> .. more HTML
<%
End If
%>

...然后对文件进行修改,在你准备好启用代码之前,只需将blnDebug设置为False,就可以有效地“注释掉”你的代码。对于我来说,这比在每个内联代码调用前加撇号要方便得多。


2
我知道在Dreamweaver中可以这样做;我看到我的同事这样做过。 但是我大多数时间都在使用Visual Studio或Notepad ++,这个功能在那里不起作用。
因此,我使用单引号'的特殊粘贴来注释多行,方法是按下:Shift + Alt +向上或向下箭头,然后添加一个单引号'
取消注释'也是同样的方法,选择所有行中的所有',然后删除。
图片演示如下:Enter image description here Enter image description here

0

我正在使用类似于@Vasily Hall答案的解决方案

我正在使用Sublime,所以我也需要将注释可视化到我的IDE中

<% if 1 = 2 then 'comment %>
  <!--div>
   ...
   multicomment goes here
   ...
  </div -->
<% end if 'end comment %>

0

我一直使用的注释方法是:

<%'=Var%>

0
作为个人使用的本地测试,您可以使用%><!--关闭asp标记,并继续使用--><%执行代码,而不必担心泄露代码。
<%
first block to execute
%><!-- 

second block to comment out

--><%
Third block to execute
%>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接