ASP.NET基础-页面跳转
转自http://icandoit.hard.blog.163.com/blog/static/507101342009102535519788/
一、利用HyperLink服务器控件实现从一个页面跳转到另一个页面
1、在ASP中常使用“<a href=“WebForm2.aspx”>跳转到页面2</a>”方式实现页面跳转的功能,在ASP.NET中仍可使用此方法,另外还可以使用HyperLink服务器控件代替,HTML代码如下:
<form id= “Form1“ method= “post” runat=“server”> <asp:HyperLink id= “ HyperLink1” runat=“server” NavigateUrl=“WebForm2.aspx”> 跳转到表单2</asp:HyperLink> </form>
2、利用HyperLink服务器控件的NavigateUrl属性用于指定要跳转页面的URL地址。上述HTML代码的运行结果和前一种方法相同,但两者有一点重要的区别,HyperLink服务器控件可以在服务器端编程引用和改变NavigateUrl属性的值,从而允许跳转的目标页面可以根据当前状态变化,使用起来显得更灵活。需要注意的是:由于该服务器控件本身没有事件,因此只能在其他事件中设置Navigate属性,在Page_Load事件设定的情况比较多。
下面代码可以实现当用户点击HyperLink控件时跳转到WebForm2.aspx页面:
Private void Page_Load(object sender,System.EventArgs e) { HyperLink.NavigateUrl= “ WebForm2.aspx “; }
二、利用Server.Transfer方法实现从一个页面跳转到另一个页面
Server.Transfer方法在实现页面跳转的同时将页面的控制权进行移交。在页面跳转的过程Request、 Session等保存的信息不变,页面A跳转到页面B后可以继续使用页面A中提交的数据信息。使用此方法由页面A跳转到页面B后,浏览器的地址栏仍保持页面A的URL信息。Server.Transfer方法的重定向请求是在服务器端进行,浏览器不知道服务器已经执行了一次页面变换,因此浏览器的地址栏仍保持不变。Server.Transfer方法的使用代码如下。
在WebForm1.aspx文件
Server.Transfer("WebForm2.aspx? id= AA &name= BB ");
在WebForm2.aspx文件
string id=Request.Params["id"]; string name=Request.Params["name"]; Response.Write(id+"<br>"+name);
三、利用Server.Execute方法实现从一个页面跳转到另一个页面
Server.Execute方法允许当前页面执行同一Web服务器上的另一个页面,当另一页面执行完毕后,控制流程重新返回到原页面发出Server.Execute调用的位置。这种方式类似于针对页面的一次函数调用,被调用的页面能够访问原页面的表单数据和查询字符串集合,所以需要把被调用页面Page指令的EnabledViewStateMac属性设置为False。
在WebForm1.aspx文件
Server.Execute("WebForm2.aspx? id= AA &name= BB ");
在WebForm2.aspx文件
string id=Request.Params["id"]; string name=Request.Params["name"]; Response.Write(id+"<br>"+name);
四、利用Response.Redirect方法实现从一个页面跳转到另一个页面
Response.Redirect方法首先发送一个HTTP响应到客户端,通知客户端跳转到一个新的页面,然后客户端再发送跳转请求到服务器端。在页面跳转后内部控件保存的所有数据信息将丢失,因此当页面A跳转到页面B,页面B将无法访问页面A中提交的数据信息。使用此方法跳转页面后浏览器地址栏的URL信息改变,但是可以通过Session、Cookies、Application等对象进行页面间的数据传递。使用Response.Redirect方法时,重定向操作发生在客户端,总共会涉及到两次与Web服务器的通信(两次往返),第一次是原始页面的请求,第二次是重定向新页面的请求。
Response.Redirect方法的使用代码如下。
Response.Redirect(“MAIN.ASPX”);//将客户端重定向到新的URL并终止当前页面
五、页面跳转方式的选择
(1)应用HyperLink服务器控件的情况:
1、需要由用户来决定何时转换页面;2、需要用程序来控制转换的目标、但转换的时机由用户决定。
(2)应用Response.Redirect方法的情况
1、需要把用户连接到另一台服务器的页面;2、需要把用户连接到非ASPX类型的页面,例如HTML页面;
3、需要将查询字符串作为URL的一部分保留。
(3)应用Server.Transfer方法的情况
如果需要将执行流程转入同一Web服务器的另一个ASPX页面,应当使用Server.Transfer方法,而不是使用
Response.Redirect方法,因为Server.Transfer能够避免不必要的网络通信,从而获得更好的性能和浏览效果。
(4)应用Server.Execute方法的情况
需要将一个ASPX页面的输出结果插入另一个ASPX页面中。
注意:为确保HTML输出的合法性,最好使用Response.Redirect方法,不要使用Server.Transfer和Server.Execute方法。因为有些情况下使用这两种方法返回给客户端的页面包含多个<HTML><BODY>等标记,不是合法的HTML页面。如果用户用的是非IE浏览器可能会产生错误。