经典的asp包括

时间:2008-09-23 12:19:12

标签: asp-classic vbscript externalizing

我正在尝试将一些asp逻辑分离到一个单独的页面中。 现在,我试图调用一个简单的函数。

这是我正在使用的简单索引页面

<html>
<head>
<title>Calling a webservice from classic ASP</title>
</head>
<body>
<%
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
 %>
  <!--#include file="aspFunctions.asp"-->
  <%
  doStuff()
End If
%>
<FORM method=POST name="form1" ID="Form1">
ID:
<INPUT type="text" name="corpId" ID="id" value="050893">
<BR><BR>
<INPUT type="submit" value="GO" name="submit1" ID="Submit1" >
</form>
</body>
</html>

这是aspfunctions.asp

sub doStuff()
    Response.Write("In Do Stuff")
end sub

当我点击表单上的提交按钮时,我会得到以下内容 sub doStuff()Response.Write(“In Do Stuff”)end sub

Microsoft VBScript运行时错误'800a000d'

有谁知道我可能做错了什么?

非常感谢任何帮助

由于 达米安 类型不匹配:'doStuff'

/uat/damien/index.asp,第15行

5 个答案:

答案 0 :(得分:8)

你必须在&lt; %%&gt;中包含asp函数标签

答案 1 :(得分:5)

aspfunctions.asp应该在内部标签中,因此asp被“执行”,例如

aspfunctions.asp:
<%
    sub doStuff()
        Response.Write("In Do Stuff")
    end sub
%>

否则aspfunctions.asp中的asp只被视为纯文本,因此就服务器而言,doStuff从未定义过。

答案 2 :(得分:4)

您将其他文件包含在if语句中。这并不意味着它是动态包含的,它不是。它将永远包括在内。

要查看此操作,请尝试以下示例:

<%
If 1=0 Then
'We never get here
%>
    <!--#include file="aspFunctions.asp"-->
<%
    dostuff()
End If
dostuff()
%>

答案 3 :(得分:1)

如果我没记错,那么没有返回值的呼叫就不需要括号(未经测试的解决方案):

doStuff

答案 4 :(得分:-2)

在两个地方进行更改:

  1. 在aspfunctions.asp中写入“sub doStuff”而不是sub doStuff()
  2. 将该功能称为doStuff而不是doStuff()