文章目录

  • 前言
  • ASP.NET页面跳转比较
    • 1. Server.Execute()
    • 2. Server. Transfer()
      • Server. Transfer()执行
    • 3. Response.Redirect()
      • Response.Redirect缺陷:
    • 4. Transfer()、Execute()、Redirect()实现跳转页面原理

前言

在Web网页中网页的跳转是十分常见的和实用的,ASP.NET中提供了三种跳转页面方式,而他们都有不同的特点。Server对象的Transfer() 保持原URL地址跳转到新界面,原始页面的元素不显示。Server对象的Execute() 保持原URL地址,将要显示的元素与原始元素组合呈现,原始元素显示。Response对象的Redirect() 生成新URL地址,跳转到新界面,原始页面的元素不显示。

ASP.NET页面跳转比较

1. Server.Execute()

用于执行从当前页面转移到另一个页面,并将执行返回到当前页面,执行所转移的页面在同一浏览器窗口中执行,然后原始页面继续执行。所以执行Execute方法后原始页面保留控制权。
Server.Execute方法允许当前的ASPX页面执行一个同一Web服务器上的指定ASPX页面,当指定的ASPX页面执行完毕,控制流程重新返回原页面发出Server.Execute调用的位置。这种页面导航方式类似于针对ASPX页面的一次函数调用,被调用的页面能够访问发出调用页面的表单数据和查询字符串集合,所以要把被调用页面Page指令的EnableViewStateMac属性设置成False。

2. Server. Transfer()

用于将执行完全转移到指定页面。执行该方法时主调页面将失去对其的控制权。但是Url地址依然保留原始页面的地址
Server.Transfer方法把执行流程从当前的ASPX文件转到同一服务器上的另一个ASPX页面。调用Server.Transfer时,当前的ASPX页面终止

Server. Transfer()执行

执行流程转入另一个ASPX页面,但新的ASPX页面仍使用前一ASPX页面创建的应答流。如果用Server.Transfer方法实现页面之间的导航,浏览器中的URL不会改变,因为重定向完全在服务器端进行,浏览器根本不知道服务器已经执行了一次页面变换。默认情况下,Server.Transfer方法不会把表单数据或查询字符串从一个页面传递到另一个页面,但只要把该方法的第二个参数设置成True,就可以保留第一个页面的表单数据和查询字符串。同时,使用Server.Transfer时应注意一点:目标页面将使用原始页面创建的应答流,这导致ASP.NET的机器验证检查(MachineAuthentication Check,MAC)认为新页面的ViewState已被篡改。因此,如果要保留原始页面的表单数据和查询字符串集合,必须把目标页面Page指令的 EnableViewStateMac属性设置成False。

server.Transfer()有一个不足就是:当用户在a.aspx中提交了一个表单,然后用Server.Transfer()进入 b.aspx,这时如果用户刷新一下页面,

浏览器便会问用户是否“重试”发送表单,如果用户点击“是”,那么,表单中的数据被重新发送到服务器。如发送表单的作用就是为了向数

据库中插入一条记录,结果导不希望发生的事——同一表单被多次加入到数据库中。

3. Response.Redirect()

导致浏览器链接到一个指定的URL。当Response.Redirect()方法被调用时,它会创建一个应答,应答头中指出了状态代码302(表示目标已经改变)以及新的目标URL。浏览器从服务器收到该应答,利用应答头中的信息发出一个对新URL的请求。
这就是说,使用Response.Redirect方法时重定向操作发生在客户端,总共涉及到两次与服务器的通信(两个来回):第一次是对原始页面
的请求,得到一个302应答,第二次是请求302应答中声明的新页面,得到重定向之后的页面。

Response.Redirect缺陷:

  1. 在Response.Redirect中,我们得不到任何第一页的输出
  2. Response.Redirect会丢失request中的所有属性,当然我们可以通过一些其他的办法,比如session来搞定,可是,有些页的参数是在request中传过来的,这样的话,就不行了
  3. Response.Redirect需要client端再发起一个请求。

4. Transfer()、Execute()、Redirect()实现跳转页面原理

在网络状态较好的情况下,Redirect(url)方法效率最高!! 可重定向到同一台或非同一台服务器上的aspx或非aspx(html)资源
Server.Transfer方法和Server.Execute方法最灵活!! 但只能转到同一Application目录下,也有可能导致不期望的结果发生Server.Execute方法占用资源最多。

ASP.NET实现页面跳转三种方式相关推荐

  1. 微信小程序页面跳转三种方式

    为了不让用户在使用小程序时造成困扰,微信小程序规定页面路径只能是五层,请尽量避免多层级的交互方式. 页面跳转的话就涉及到了多个页面层级 第一种:wx.navigateTo(OBJECT) 保留当前页面 ...

  2. Vue页面刷新的三种方式

    vue页面刷新的三种方式 由于功能需求,需要离开页面前告知用户是否需要丢弃未保存的数据,这时候切换的菜单会失效,但是菜单依然会高亮错误.所以要进行一次页面刷新. 方法一 原地页面刷新 this.$ro ...

  3. 页面添加锚点的三种方式

    页面添加锚点的三种方式 HTML中的链接,正确的说法应该称作"锚点",它命名锚点链接(也叫书签链接)常常用于那些内容庞大繁琐的网页,通过点击命名锚点,不仅让我们能指向文档,还能指向 ...

  4. 大数据WEB阶段 (十)Response、ServletConfig、ServletContext、资源跳转三种方式

    Response.ServletConfig.ServletContext.资源跳转三种方式 - (一)Response 一.Response概述 在doGet和doPost方法的参数中,HttpSe ...

  5. 仿联想商城laravel实战---5、无刷新的增删改查(动态页面更新的三种方式(html))...

    仿联想商城laravel实战---5.无刷新的增删改查(动态页面更新的三种方式(html)) 一.总结 一句话总结: 直接js增加删除修改html 控制器直接返回处理好的页面 用双向绑定插件比如vue ...

  6. 微信小程序页面跳转(三种方法)

    方法1 对标签绑定点击事件 <view bindtap="clickMe" data-nid="123" data-name="SD" ...

  7. ASP.Net中页面传值的几种方式

    大致概括一下,ASP.NET 页面之间传递值得方式大致可以分为如下几种:Request.QueryString["name"],Request.Form("name&qu ...

  8. Struts 往jsp页面传值的三种方式 以及获取Jsp页面值得一种方式

     //传值的的第一种方式直接在action中getset方法完成值的传递 第一种方法值是放在值栈valuestack中其余两种是放在actioncontext中 this.setName(&quo ...

  9. 爬虫-获取登陆可见页面技术小结-三种方式的比较

    方式一,session类的实例化对象 session类实例化,得到一个对象 对象发起post请求,登陆网站 成功登陆,会获得网站写入的cookie信息 对象发起get请求,本次请求会自动的带上cook ...

最新文章

  1. R语言使用caretEnsemble包的caretStack函数把多个机器学习模型融合成一个模型、构建融合(集成)预测模型、使用融合模型进行预测推理
  2. 共享一些知识点的学习地址
  3. winform取CPU编号、MAC地址、硬盘信息、IP地址、串口信息
  4. Jenkins 从选择插件到配置详解-Gradle
  5. [JavaWeb-JavaScript]JavaScript_RegExp正则表达式对象
  6. [渝粤教育] 天津现代职业技术学院 餐饮服务实务(翁莉) 参考 资料
  7. 图论 —— 图的连通性 —— 并查集判断连通性
  8. 数字图像处理 频率域锐化 MATLAB实验
  9. ajax传值controller怎么写,关于ajax请求Controller传值问题详细记录
  10. java实现顺序表和链表_Java: 实现顺序表和单链表的快速排序
  11. 视频换脸AISWAP技术示例
  12. 移动端上下拖动调整顺序效果_HTML5 移动端的上下左右滑动问题
  13. JAVA(int...i)问题
  14. 最简单的YUV422转jpg的例程
  15. 人工智能 一种现代方法 第3章 通过搜索进行问题求解
  16. 29、NeRV: Neural Reflectance and Visibility Fields for Relighting and View Synthesis
  17. 基于区块链技术实现“资产通证化”
  18. elementui的表单验证踩坑-动态绑定输入框required后只显示英文提示
  19. 一个简单的例子解释什么是量子计算机
  20. OC / Swift / Xcode - 怎么私有化init 方法(禁止调用init方法生成对象)

热门文章

  1. 720全景图在线下载
  2. Linux命令大全(入门必备)
  3. 新显卡出世,我们来谈谈与深度学习有关的显卡架构和相关技术
  4. uniapp的原生导航栏返回键
  5. 新基建如何走向step 2:京东智联云如是说
  6. HP LaserJet MFP M132snw网络打印机经常显示脱机
  7. ​DevStream 团队在背后都是怎么“吐槽”用户的
  8. 荣耀发布V10搭载AI芯片 人工智能是下一波手机革命
  9. 实现一个简单的长轮询
  10. 文档在线预览(二)word、pdf、excel文件转html以实现文档在线预览