Server.Transfer 和 Response.Redirect 的用法

2023-05-16

在ASP.NET中,在后台传值方式目前大多都是用 Response.Redirect("页面地址") 来重定向页面的,但是现在还有一种方式也可以达到重定向页面的作用,而且在某些时刻会起到一种很棒的效果,那就是使用 Server.Transfer("页面地址") 来重定向地址。

现在我们来详细了解一下这两种重定向页面地址的用法和区别:

Response.Redirect :Response.Redirect 会将地址输出至浏览器,执行重定向操作。但是请注意,在程序执行到Response.Redirect("页面地址") 语句时,会立即中断当前页面的生命周期,直接向客户端返回信息,让客户端进行重定向操作。这个时候页面URL将会显示重定向后的地址。

Server.Transfer :Server.Transfer 是一个很奇特的方法。当使用 Server.Transfer 方法重定向页面时,虽然页面也会被重定向至指定页,但是并不会在浏览器的URL上体现出来,并且若重定向的页面后有参数,也不会显示在浏览器的URL上。

举一个例子: 有 index1.aspx 和index2.aspx 两个页面,在 index1.aspx 的后台 index1.aspx.cs 中使用 Server.Transfer重定向页面至 index2.aspx 页面,

protected void Page_Load(object sender, EventArgs e) { Server.Transfer("index2.aspx?name=Tom"); }

在index2.aspx.cs代码中接收并显示传来的值,

protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { string name = Request.QueryString["name"]; Response.Write(name); } }

设置index1.aspx页面为起始页,运行程序,我们会发现,在页面为index1.aspx页面上输出了Tom。

事实上,传统的 Response.Redirect 会在程序运行至该语句时,强制中断该页面的生命周期,重定向至新的指定页面上去。而 Server.Transfer 并不会终止该页面,而是将当前页面响应的输出流终止,然后重新定位请求至index2.aspx页面,也就是说,在index1.aspx这个页面的响应流并没有终止的情况下,它去请求index2.aspx页面,然后将index2.aspx页面操作的结果响应给客户。

Server.Transfer优缺点:Server.Transfer因为浏览器URL上并没有看到有重定向痕迹,因此并不会占用较多的 HTTP 请求,因此这可以减轻服务器的压力,使你的服务器运行更快。不过,请注意,由于 "transfer" 只能在同一服务器端的同一站点间运行,所以你不能用 Server.Transfer 将用户重定向到另一服务器上的站点。要重定向到服务器以外的站点,只有 Response.Redirect 能办到。 其次,Server.Transfer 保留浏览器端的 URL 地址。这对流线型的数据输入很有帮助,不过这也增加了调试的复杂度。 

Server.Transfer 方法还有另一个参数——"preserveForm"。如果你设置这个参数为 True,比如:Server.Transfer("WebForm2.aspx", True), 那么 query string 和任何 form 变量都会同时传递到你定位的页面。 
例:WebForm1.aspx 有一个文本框名为 TextBox1,你利用 preserveForm 为 True 传递到 WebForm2.aspx,你仍然可以用 Request.Form("TextBox1") 来取得文本框的值。 
这种技术对向导式的多页面输入很有用,不过这里有一个你必须注意的问题是,当你使用 preserveForm 参数时,ASP.NET 有一个 bug,通常情况下,当试图传递 form 或 query string 值时会发生错误。非官方的解决办法是在你要传递的目的页面中设置 enableViewStateMac 属性为 True,然后再将其设置回 False。这说明你需要使用 enableViewStateMac 的 False 值才能解决这个问题。 
总结:Response.Redirect 简单地告诉浏览器访问另一个页面。Server.Transfer 有利于减少服务器请求,保持地址栏 URL 不变,允许你将 query string 和 form 变量传递到另一个页面(有一点小小的缺陷)。 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Server.Transfer 和 Response.Redirect 的用法 的相关文章

  • 为什么这个 django url 没有重定向?

    从以下表单获取发布数据后 页面应重定向到 associate learn 如操作中所示 然而 它只是停留在单选按钮页面上 我怀疑我犯了初学者的错误 但在重新阅读教程后 我不确定发生了什么 索引 html Choose a dataset i
  • 重定向和导航/转发之间有什么区别以及何时使用什么?

    JSF 中的导航有什么区别 FacesContext context FacesContext getCurrentInstance context getApplication getNavigationHandler handleNav
  • Response.Redirect 并不总是重定向

    我们在一个工作不一致的页面上有一个简单的 Response Redirect IIS 6 0 大多数情况下 它会正确重定向 但我们收到一些用户抱怨 他们没有重定向 而是看到 302 对象移至此处 页面 该页面显示标题信息以及正确的位置 如果
  • 为什么需要将nginx中的$args重定向到index.php?

    许多 PHP 框架建议将其添加到 nginx location try files uri index php is args args 执行index php在所有 HTTP 请求上 为什么我需要 is args args 我觉得 arg
  • Laravel 注册成功后如何重定向到上一页?

    现在redirectTo被设定为 home 我想知道如何重定向到上一页 我尝试使用 protected redirectTo URL previous 但我得到解析错误 期待 or 解决这个问题的最佳解决方案是什么 我想我需要重写 redi
  • Jetty Plugin 9启动不喜欢icu4j-2.6.1.jar

    我对 mortbay 的 Maven jetty 插件 6 有相同的配置
  • Electron:阻止/取消页面导航

    有没有办法阻止或取消电子中的页面导航 win webContents on did start loading function event url if event sender getURL startsWith http xyz ev
  • 如何与使用 child_process.spawn 创建的新创建的服务器交互

    我正在尝试为我的私人托管的 反恐精英全球攻势 服务器制作一个前端 当我点击运行服务器时 在前端 一切正常 服务器启动并记录到控制台 但是如何查看服务器IP地址 服务器中的玩家等信息呢 这是我到目前为止运行服务器的内容 router post
  • axios响应不显示数据

    我正在学习使用 Axios 但输出如图所示 当我使用 fetch 时 输出正常 我该如何修复 Axios const axios require axios default const url https jsonplaceholder t
  • router.navigate 更改 URL,但不渲染组件

    而不是使用 a href my path my param a 在我的模板中 我愿意使用带参数的函数将我重定向到页面 所以 这就是我在 ts 文件中构建函数的方式 redirectToChat my param this router na
  • 在 Cypress 中提交 POST 表单并导航到结果页面

    当我使用 cy request 命令时 Cypress 加载响应正文时遇到问题 在我们的应用程序中 当填写并提交表单时 它会发布 并且响应正文是新页面 当我尝试在赛普拉斯中执行时 是以编程方式填写表格 因此 我设置了一个 cy reques
  • 无需代理转发的 SSH 跳转主机

    虽然是一个简单的问题 但我已经搜索了几天没有成功 M My machine J Jump Host S Server Jump Host has my public key on authorized keys Server has J s
  • 如何阻止 Firefox 在本地开发服务器上强制使用 https://?

    我正在使用 AMPPS 在 Macintosh 上运行开发环境 我有一个包含项目文件的文件夹 我已将其添加到我的hosts file 127 0 0 1 www example com 我已经相应地设置了虚拟域 当我尝试使用 Firefox
  • 从 RestSharp 响应标头获取值

    我希望有人可以帮助解决我在使用 RestSharp 时遇到的问题 一切正常 我使用以下代码得到回复 var client new RestClient http mybaseuri com var request new RestReque
  • HTTP 重定向图像可以吗?

    返回图片资源时返回301 302 303代码可以吗 我过去曾这样做过 而且似乎有效 这是好的做法吗 它与大多数浏览器兼容吗 是的 您可以重定向图像 浏览器将遵循重定向 但出于性能原因 您通常希望将重定向保持在最低限度 因为每个重定向都需要单
  • 如果 CodeIgniter 方法不存在,则重定向到默认方法。

    我正在使用 CodeignIter 并且正在寻找一种在被调用方法不存在时为单个控制器编写自定义处理例程的方法 假设你打电话www website com components login In the components控制器 没有一个方
  • nginx 代理重定向,带有来自 uri 的端口

    我正在尝试使用 nginx 进行重定向 这个想法是将某些端口的 uri id 1234 重定向到 localhost 1234 固定端口的重定向 location id 1234 rewrite id 1234 1 break proxy
  • 詹金斯上的登录类型选择有什么区别?

    我之前已经在一些机器上通过 war 文件和作为 Windows 服务安装的网页安装了 jenkins 现在我尝试通过 msi 文件将其安装在另一台计算机上 但我遇到了一个问题 在安装步骤中 有一个步骤询问我 登录类型 这给了我 2 个选择
  • 如何关闭python服务器

    使用此代码来运行 python 服务器 import os from http server import SimpleHTTPRequestHandler HTTPServer os chdir c users owner desktop
  • 阻止注销页面后的后退按钮

    我有 php 注销页面 当用户单击注销链接时 请参阅此页面并重定向到索引页面 但是当单击后退按钮时 我会看到带有用户数据的上一页 当然 当我刷新页面时 我看不到以前的页面和数据 我在单击注销并单击后退按钮后检查了其他代码 drupal 但我

随机推荐

  • MFC中实现模态对话框的结构与原理

    1 模态对话框 在涉及GUI程序开发的过程中 xff0c 常常有模态对话框以及非模态对话框的概念 模态对话框 xff1a 在子界面活动期间 xff0c 父窗口是无法进行消息响应 独占用户输入 非模态对话框 xff1a 各窗口之间不影响 模态
  • 深入理解MFC消息循环和消息泵的原理

    首先 xff0c 应该清楚MFC的消息循环 GetMessage PeekMessage xff0c 消息泵 CWinThread PumpMessage 和MFC的消息在窗口之间的路由是两件不同的事情 在MFC的应用程序中 应用程序类基于
  • 窗口结束后资源释放不掉问题解决办法

    net类库已经帮助我们实现了窗口的关闭 xff0c 如果此窗口是系统的主窗口 xff0c 关闭此窗口即应该退出了整个应用程序 但事实上有时候并不是这样的 xff0c 关闭窗口 xff0c 只是停止了当前窗口的消息循环 系统主窗口 xff0c
  • 模态对话框的消息循环原理及分析笔记

    简述 xff1a APP消息循环和模态对话框中局部消息循环的关系 根据上图可以看出 xff0c 在APP的消息循环再派发ONOK消息后 xff0c 调用ModalDlg的响应函数 xff0c pWnd gt OnOk 在该消息中 xff0c
  • 数据库常用命令笔记

    一 xff1a 增 1 INSERT INTO table name 列1 列2 VALUES 值1 值2 2 insert into user tbl select from user tbl where user name 61 39
  • MFC中动态创建控件以及添加事件响应

    本文实例讲述了MFC中动态创建控件以及事件响应实现方法 xff0c 分享给大家供大家参考 具体实现方法如下 xff1a 动态控件是指在需要时由Create 创建的控件 xff0c 这与预先在对话框中放置的控件是不同的 一 创建动态控件 xf
  • vnc好用吗,vnc是什么,vnc好用吗

    VNC 是在基于 UNIX 和 Linux 操作系统的免费的开源软件 xff0c 远程控制能力强大 xff0c 高效实用 xff0c 其性能可以和Windows 和 MAC 中的任何远程控制软件媲美 VNC Virtual Network
  • MFC框架1

    第一点 xff1a 类别型录网的搭建 xff1a 类别型录网搭建的目的是为了实现所谓的 34 执行期类型识别 34 xff0c 也就是在程序运行的时候识别出某个对象是否是某个类的实例 基类也可以 这里还不是很明白为什么需要实现 34 执行期
  • MFC框架简介2

    MFC框架简介 一 MFC框架 MFC库是开发Windows应用程序的C 43 43 接口 MFC提供了面向对象的框架 xff0c 采用面向对象技术 xff0c 将大部分的Windows API 封装到C 43 43 类中 xff0c 以类
  • MFC的框架程序分析3

    本文将剖析基于MFC的框架程序 xff0c 探讨MFC框架程序的内部组织结构 xff0c MFC是微软为了简化程序员的开发工作而设计的一套c 43 43 类集合 xff0c 利用这些类有 效地帮助程序员完成windows应用程序开发 代码结
  • MFC框架结构简述

    现在直接给出MFC程序执行顺序 xff0c 但着重分析其运行机制和功能分析 xff0c 其流程是 theApp全局对象定义 gt TestApp构造函数 gt WinMain函数 在执行theApp对象的构造函数之前先执行CWinApp基类
  • MFC框架机制详细论述

    1 1 Windows消息机制要点 1 1 1 窗口过程 每个窗口会有一个称为窗口过程的回调函数 WndProc xff0c 它带有四个参数 xff0c 分别为 xff1a 窗口句柄 Window Handle 消息ID Message I
  • c#中WinForm中拖拽窗体实现移动功能(无边框模态窗体)

    在WindowsForm 应用程序中 如果将窗体的FormBorderStyle属性设置为none 这时 用鼠标拖拽窗体时就无法实现移动的功能了 xff0c 下面就是解决方案 在FormBordeStyle属性设置为none的窗体的后台代码
  • 关于SetCapture() 和 ReleaseCapture()的用法

    MSND中对SetCapture 函数的说明为 xff1a 该函数在属于当前线程的指定窗口里设置鼠标捕获 一旦窗口捕获了鼠标 xff0c 所有鼠标输入都针对该窗口 xff0c 无论光标是否在窗口的边界内 同一时刻只能有一个窗口捕获鼠标 如果
  • c# Invoke和BeginInvoke 区别详解

    Control Invoke 方法 Delegate 在拥有此控件的基础窗口句柄的线程上执行指定的委托 Control BeginInvoke 方法 Delegate 在创建控件的基础句柄所在线程上异步执行指定委托 以下为实际应用中碰到的问
  • WindowsAPI-Findwindow函数和FindWindowEx用法

    1 函数说明 FindWindow xff0c Win32 API函数 FindWindow函数返回与指定字符串相匹配的窗口类名或窗口名的最顶层窗口的窗口句柄 这个函数不会查找子窗口 2 函数原型 xff1a HWND FindWindow
  • 利用FindWindow和SendMessage进程通信

    利用FindWindow和SendMessage xff0c 特此记下 首先说FindWindow FindWindow返回与指定字符创相匹配的窗口类名或窗口名的最顶层窗口的窗口句柄 函数原型为 xff1a C 43 43 xff1a HW
  • vnc viewer,什么是vnc viewer

    在日常工作中 xff0c 经常会用到vnc xff0c 自然也会用到vncviewer xff0c 那你知道什么是vncviewer吗 xff1f 怎么使用vncviewer呢 xff1f 接下来让我们一起去看看吧 首先先让我们来看看一款v
  • 句柄的概念详解

    1 这里将句柄所能标识的所有东西 xff08 如窗口 文件 画笔等 xff09 统称为 对象 2 图中一个小横框表示一定大小的内存区域 xff0c 并不代表一个字节 xff0c 如标有0X00000AC6的横框表示4个字节 程序运行到某时刻
  • Server.Transfer 和 Response.Redirect 的用法

    在ASP NET中 xff0c 在后台传值方式目前大多都是用 Response Redirect 34 页面地址 34 来重定向页面的 xff0c 但是现在还有一种方式也可以达到重定向页面的作用 xff0c 而且在某些时刻会起到一种很棒的效