与 Internet 信息服务 (IIS) 5.0 引入新 Active Server Page (ASP) 功能之一是有关 ASP 内置服务器对象传输方法。
此新方法是替代如何使用 Response.Redirect 方法来传输到其他页, 并且允许到二页的 ASP 内置和 Error 对象传输。 此外, 传输代替代替强制浏览器重定向到新页面上。
更多信息
当调用 Server.Transfer 方法, 是终止执行第一页并且执行第二页开始。 如果第一页开始写入响应缓冲区, 第二页追加到缓冲区而不是替换它。 通过 ASP 文件, 它将转到如果缓冲是打开, 然后 HTTP 头进行修改。 除非尚没有内容已被发送由 ASP 如果缓冲是关闭, HTTP 头将不修改由 ASP 文件, 它将转到。 此外, 多传输连续, 中调用一起从而链页。
仅数据传输到另一个 ASP 页是 ASP 生成单元对象和 ASP Error 对象值从第一个请求。 第二 ASP 页中没有通过 ASP 首页声明任何变量。
当传输到其他应用程序, 中页 Application 和 Session 对象将包含起始应用程序信息。 ASP 页, 它将转到相应, 被视为起始应用程序的一部分。
示例
下列示例页阐释如何使用 Server.Transfer 方法。 在本示例, 起始页包含两种形式, 使用 HTTPPOST 方法和其他使用 HTTPGET 方法之一。 两页使用相同二页检测 HTTP 方法并传送到其他三页为使用每个方法。 因为正在使用传输方法, 仍然是填充请求对象并各自三页上显示正确结果从第一页。
1. | 复制以下 ASP 代码并保存为 " page1.asp " (不带引号): <html><body><h3>Step 1 - Form Page</h3><table border="1"> <tr> <th>POST</th> <td> <form action="page2.asp" method="POST"> <input type="text" name="Name"> <input type="submit" value="Submit"> </form> </td> <tr> </tr> <th>GET</th> <td> <form action="page2.asp" method="GET"> <input type="text" name="Name"> <input type="submit" value="Submit"> </form> </td> </tr></table></body></html> |
2. | 将以下代码作为 " page2.asp " (不带引号): <% @LANGUAGE="VBSCRIPT" %><html><body><h3>Step 2 - Transfer Page</h3><% Select Case UCase(Request.ServerVariables("REQUEST_METHOD")) Case "POST" Server.Transfer "page3a.asp" Case "GET" Server.Transfer "page3b.asp" Case Else Response.Write "An unknown HTTP verb was used." End Select%></body></html> |
3. | 将以下代码作为 " page3a.asp " (不带引号): <% @LANGUAGE="VBSCRIPT" %><h3>Step 3a - POST Results</h3><p>Hello <% = Request.Form("Name") %></p></body></html> |
4. | 将以下代码作为 " page3b.asp " (不带引号): <% @LANGUAGE="VBSCRIPT" %><h3>Step 3b - GET Results</h3><p>Hello <% = Request.QueryString("Name") %></p></body></html> |
若要试用该示例, 所有网页保存到 Web 文件夹与 " 脚本 " 访问启用并浏览 " page1.asp "。