asp.net服务器端跳转页面的三种方法
1 、 Response.Redirect 这个跳转页面的方法跳转速度不快,因为它要走 2 次回发 (postback) 。
它可以跳转到任何页面,没有站点页面限制 ( 可以由 baidu 跳转到 google) ,但不能跳过登录保护。
速度慢 是其最大缺陷!
Redirect 跳转机制:首先是服务器端发送一个 http 请求到客户端,通知需要跳转到新页面,然后客户端再发送跳转请求到服务器端。需要注意的是跳转后内部空间保存的所有数据信息将会丢失,所以需要用到 session 。
2 、 Server.Transfer 速度快,只需要一次 postback ,但它 必须是在同一个站点 内跳转。
Server.Transfer 的重定向请求发生在服务器端,仅仅将此控件传递到新的网页并且不在客户端重新定位该网页,所以浏览器的 url 地址仍然是原页面的地址!另外,它 能跳过登录保护 。
默认情况下, Transfer 方法不会把表单数据或查询字符串从一个页面传递到另一个页面,但是如果把该方法的第二个参数设置成 true ,就可以保留原先页面的表单数据和查询字符串。
Server.Transfer("hyj.aspx"); // 服务器停止执行本页,保存本页的当前数据后,再使页面转向 hyj.aspx ,并将跳转之前数据加上 hyj.aspx 页面执行的结果返回给浏览器。
3 、 Sever.Execute 这个方法主要是用在页面设计上,它 必须是在同一个站点 内跳转,也只需要一次 postback 。
这个方法是需要将一个页面的输出结果插入到另一个 aspx 页面的时候使用,大部分是在表格中将某一个页面类似于嵌套的方式存在于另一页面。
Server.Execute("hyj.aspx");// 服务器保存此页的当前数据后,使页面转向到 hyj.aspx 执行,在 hyj.aspx 执行之后又返回本页继续执行,再将三者结果合并后返回给浏览器。
Execute 方法跳转类似于 函数调用 。
如何选择页面重定向的方法:
asp.net 中页面跳转方式 ----Redirect 、 Transfer 、 Execute 、超链接、 HyperLink 控件。
当需要把用户跳转到另一台服务器上的页面的时候 ,使用 Redirect
当需要把用户跳转到非 aspx 页面时候,如 html ,使用 Redirect
需要把查询字符串作为 url 一部分传给服务器的时候,使用 Redirect ,因为其他两种方法不能做到 2 次 postback ,把数据带回服务器
需要 aspx 页面间的转换(不涉及登录),使用 Transfer
当需要把 aspx 页面的输出结果插入到另一个 aspx 页面的时候使用 Execute 。
当需要用户来决定什么时候跳转页面,就使用超链接。
要用程序来控制转换的目标,但转换的时机由用户决定,使用 Web 服务器的 HyperLink 控件,动态设置其 NavigateUrl 属性。