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文件,变量名称是否区分大小写?
非常感谢.
您应该将页面视为构建在一个连续页面中,这样,如果您包含多个.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)
希望这可以帮助.