欢迎光临
我们一直在努力

ASP.NET四种页面导航方式对比与选择 (2)-.NET教程,Asp.Net开发

建站超值云服务器,限时71元/月

二、用程序控制重定向

虽然超级链接能够从一个页面导航到另一个页面,但这种导航方式是完全由用户控制的。有些时候,我们可能要用代码来控制整个导航过程,包括何时转到另一个页面。在这些场合,asp.net有三种不同的方式可以达到相似的目的:调用response对象的redirect方法,调用server对象的transfer或execute方法。这三种导航方式的行为基本相似,但也有区别。

2.1 response.redirect

  response.redirect方法导致浏览器链接到一个指定的url。当response.redirect()方法被调用时,它会创建一个应答,应答头中指出了状态代码302(表示目标已经改变)以及新的目标url。浏览器从服务器收到该应答,利用应答头中的信息发出一个对新url的请求。

  这就是说,使用response.redirect方法时重定向操作发生在客户端,总共涉及到两次与服务器的通信(两个来回):第一次是对原始页面的请求,得到一个302应答,第二次是请求302应答中声明的新页面,得到重定向之后的页面。

  2.2 server.transfer

  server.transfer方法把执行流程从当前的aspx文件转到同一服务器上的另一个aspx页面。调用server.transfer时,当前的aspx页面终止执行,执行流程转入另一个aspx页面,但新的aspx页面仍使用前一aspx页面创建的应答流。

  如果用server.transfer方法实现页面之间的导航,浏览器中的url不会改变,因为重定向完全在服务器端进行,浏览器根本不知道服务器已经执行了一次页面变换。

  默认情况下,server.transfer方法不会把表单数据或查询字符串从一个页面传递到另一个页面,但只要把该方法的第二个参数设置成true,就可以保留第一个页面的表单数据和查询字符串。   同时,使用server.transfer时应注意一点:目标页面将使用原始页面创建的应答流,这导致asp.net的机器验证检查(machine authentication check,mac)认为新页面的viewstate已被篡改。因此,如果要保留原始页面的表单数据和查询字符串集合,必须把目标页面page指令的enableviewstatemac属性设置成false。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » ASP.NET四种页面导航方式对比与选择 (2)-.NET教程,Asp.Net开发
分享到: 更多 (0)