ASP.NET_01-04_ASP.NET 重定向:将用户重定向到另一页
本文针对 Visual Studio 2008,但 Visual Studio 2005 与此差不多。请自行参考MSDN http://msdn.microsoft.com/zh-cn/library/x3x8t37x(v=VS.90).aspx 。我们经常需要将用户重定向到 Web 应用程序的其他页。重定向也意味着要传值给目标页面。ASP.NET 提供了下列在网页中生成重定向的方式:
- 在页上使用超链接。
- 配置跨页发送,它使您能够在提交当前页时指定备用目标页。
- 通过强制浏览器请求另一页,以编程方式重定向。
- 通过向同一 Web 应用程序中的另一页传输控件,以编程方式重定向。
超链接(<a>标记)
可以在 ASP.NET 网页上使用 HTML 定位点标记(<a>)来创建静态链接,也可以使用 HyperLink 控件以编程方式控制。在此情况下,用户显式单击链接,然后浏览器转到目标页。
目标页使用 HTTP GET 命令进行调用。因此,除非指定查询字符串,否则不会将与源页有关的任何信息传递到目标页。
如果源页和目标页位于同一 Web 应用程序中,它们可以使用会话状态或应用程序状态来共享信息。
跨页发送
默认情况下,ASP.NET 网页中的按钮将该页发送到该页本身,也就是回发,刷新当前页。跨页发送使您能够在 ASP.NET 网页上配置一个按钮,以便将当前页发送到另一页上。
跨页发送与超链接的类似之处在于通过用户操作来启动传输。但是,在跨页发送中,目标页是使用 HTTP POST 命令调用的,该命令会将源页上控件的值发送到目标页。此外,如果源页和目标页位于同一 Web 应用程序中,则目标页可以访问源页的公共属性。应用程序中的所有页始终可以共享会话状态或应用程序状态中存储的信息。
使用浏览器以编程方式重定向
可以利用用户浏览器将用户重定向到另一页。在浏览器重定向中,浏览器以 HTTP GET 请求的形式向目标服务器发出新请求。
可以以编程方式触发客户端脚本或服务器代码中的重定向。
在客户端脚本中,只要 <form> 元素的 method 属性值为 get,即可调用 form.submit 方法。在这种情况下,如果当前页包含窗体数据,则会将该数据传递到目标服务器,方法是将其作为查询字符串附加到请求的 URL。
在服务器代码中,可以调用 Redirect 方法以编程方式重定向。该方法向用户的浏览器发送命令,再由浏览器发出对目标页的 HTTP GET 命令。Redirect 方法是单击超链接等效形式。由于使用自己的代码调用方法,因此可以动态定义目标 URL(包括任何查询字符串信息)。如果源页和目标页位于同一 Web 应用程序中,则可以通过添加服务器代码将数据存储在会话状态中在源页和目标页之间共享数据。
说明:6.0 版本之前的 Internet Explorer 处理的 URL 最多只能为 2048 个字符,包括查询字符串中的数据。如果超过,则可能会导致错误,或者查询字符串中的数据可能会被截断或不随请求发送。若要在页间共享信息时避开此限制,可以使用 HTTP POST 请求重定向用户。
在服务器上以编程方式重定向
服务器上通过调用 Transfer 方法以编程方式重定向到目标页。在此情况下,服务器只是将当前源页的上下文传输给目标页。然后目标页呈现在源页的位置。源页和目标页必须位于同一 Web 应用程序中。与跨页发送一样,Transfer 方法也具有使目标页能够从源页中读取控件值和公共属性值的优点。
由于源页和目标页之间的传输在服务器上进行,浏览器没有任何关于更改后的页的信息,它仍保留有关原始(源)URL 的信息。例如,Internet Explorer 中的“地址”框在执行传输后不会发生变化,而是继续显示最近请求的页(通常为源页)的 URL。也不会更新浏览器的历史记录以反映传输过程。如果用户在浏览器中刷新页面或单击浏览器的“后退”按钮,这可能导致意外行为。因此,对于以隐藏 URL 的方式向用户呈现页面的应用程序而言,调用 Transfer 方法是一种最佳的策略。
选择重定向选项
特征 | 用法 | |
超链接 |
|
|
跨页发送 |
|
|
浏览器 重定向 |
|
|
服务器 传输 |
|
|