在经典ASP中传递变量

Jos*_*gie -2 variables error-handling webpage parameter-passing asp-classic

我正在处理遗留代码,其中包含另一个ASP页面.

<!--#INCLUDE virtual="/PAGE1.ASP"-->
Run Code Online (Sandbox Code Playgroud)

从该页面获取一个变量,比如x,我相信我会这样做:

x = Request.Form("x")
Run Code Online (Sandbox Code Playgroud)

那是对的吗?

此外,对于经典.ASP文件,变量名称是否区分大小写?

非常感谢.

Pau*_*aul 6

您应该将页面视为构建在一个连续页面中,这样,如果您包含多个.asp文件,它们将构建完成的页面.

例如,如果您有三个文件:

File_1.asp

<h1>Hello, World!</h1>
Run Code Online (Sandbox Code Playgroud)

File_2.asp

<p>This file will be included too!</p>
Run Code Online (Sandbox Code Playgroud)

File_3.asp

<%Dim version
version = 1.1%>
Run Code Online (Sandbox Code Playgroud)

......并将它们包含在一个核心文件中......

File_Output.asp

<!-- #include virtual="file_1.asp" -->
<!-- #include virtual="file_2.asp" -->
<!-- #include virtual="file_3.asp" -->
<% Response.Write(version) %>
Run Code Online (Sandbox Code Playgroud)

File_Output.asp将显示中version定义的变量File_3.asp.

有一个关于它的可爱的小文章在这里.

- 编辑 -

只是添加(错过了帖子末尾的问题):

区分大小写取决于Classic ASP使用的脚本语言.VBScript的变量名是区分敏感,而,使用JScript(其中,语法,是非常像的JavaScript)变量区分大小写的.

另外,要解决这个问题Err:

有一个伟大的小片在这里,但得到的基本事实,你需要用你的代码中,像这样的错误捕获块:

On Error Resume Next    '<-- This line starts trapping errors
    ...
On Error Goto 0         '<-- This line stops trapping errors
Run Code Online (Sandbox Code Playgroud)

如果此块中确实发生错误,则需要处理它.与ASP.NET,Java等不同,您不会被告知存在错误; 没有很好的Try...Catch包装器可以很好地处理错误.你必须预测错误发生的位置.通常很明显.如果您的脚本中有数据库操作,最好在数据读取或写入后直接测试错误.检查错误很简单 - 您测试对象的Number属性Err:

On Error Resume Next    '<-- This line starts trapping errors
    'Some database manipulation...
    If Err.Number <> 0 Then
        ... 'Handle the error
    End If
On Error Goto 0         '<-- This line stops trapping errors
Run Code Online (Sandbox Code Playgroud)

这可以扩展为考虑不同的错误消息:

On Error Resume Next    '<-- This line starts trapping errors
    'Some database manipulation...
    Select Case Err.Number
        Case 1
            ... 'Handle the error
        Case 2
            ...
        Case 3021 'No data returned
            Response.Write("No data was returned.")
    End Select
On Error Goto 0         '<-- This line stops trapping errors
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.