Asp.net网站重定向

来源:互联网 发布:手机统计表格软件 编辑:程序博客网 时间:2024/05/21 19:46

在Asp.net中,可以通过四种方法进行页面转向,分别是使用超链接、服务器端传输、浏览器重定向和跨页发送。

使用超连接

可以使用html中的<a>标签指定href属性或使用Hyperlink控件指定NavigateUrl属性跳转到指向的页面,而不进行页面回传。

服务器端传输

HttpServerUtility类的Transfer方法可以将.aspx或者.html页的URL作为字符串参数,回发给服务器。接着,终止运行当前页面,并开始请求新的页面。

Transfer方法的三个重载如下:

其中,bool类型的preserverForm参数表示,如果为true,则保留原来页面的QueryString和Form集合,默认为false。当需要将完整的控制传送到另一个页面时,这个重载非常有用,例如,我们在创建一个基于网络的,包括很多步骤的安装向导,并且需要根据用户上一步的选择答案,来排列多个不同的步骤,那么就可以使用server.Transfer重载方法,向相关页面传递完整的控制,并且保存安装向导中先前页面或者步骤的QueryString和Form集合。

Server.Transfer要求源页和目标页必须在同一个应用程序中,目标页可以访问源页的公共成员。

Server.Transfer方法不验证当前用户是否有权限查看目标页面。

当重定向到新页后,浏览器的地址栏中,还会显示原来页面的URL地址,浏览器的历史记录也不会显示这次跳转,所以,点击浏览器中的“后退”按钮可能会有意想不到的结果。

Server.Transfer方法从一个页面转到另外一个页面时,源页面的所有视图状态将丢失。

浏览器重定向

Redirct方法将.aspx或者.html页面的URL作为字符串参数,并且在客户端执行重定向。由于是一个新的服务器请求,所以它会强制完整的验证和授权。

在客户端请求带有Response.Redirect方法的页面时,服务器端返回给客户端浏览器的报文信息中,状态码是302,并且有一个location指定重定向的地址,浏览器就是根据这两个信息进行重新请求,如果是比较老的浏览器,那么在报文体中的HTML代码则可以提供用户一个手动转向的机会。

和Server.Transfer相比,Redirect方法最大的好处就是可以定向到外部网站。

Redirect有两个重载方法,如下图:

其中,bool类型的endResponse参数如果为true,则表示当前页面的执行被终止。

跨页发送

跨页发送就是通过设置特定控件(如Button)的PostBackUrl属性(所有实现IbuttonControl接口的控件),直接发送到另外一个页面,当然这种方法只能发送到另外一个.aspx页面,如果试图发送到一个.html页面,则会抛出一个异常。

在目标页,可以通过Page.PreviousPage访问前页的控件。

如果源页和目标页都在同一个应用程序中,那么它们可以共享会话和应用程序状态以及源页的公共成员。如果不在一个应用程序之内,那么目标页无法使用源页的数据。

了解页面是怎么来的?

可以通过Page类的两个属性:IsPostBack和IsCrossPagePostBack来了解页面是直接打开的,还是通过传输或者跨页打开的。

原创粉丝点击