1. Server.Transfer和Response.Redirect
今天在使用ServerTransfer和Response.Redirect定位到当前页面来实现刷新页面时,发现了一些现象:
1.使用Response.Redirect刷新本页面,造成当前页面显示的数据消失的情况:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
String Path;
string connString = "server=.;database=ComInfo;integrated security=true";
SqlConnection conn = new SqlConnection(connString);
conn.Open();
String PassUserid = Request.QueryString["C_Id"];//获取上一页面传递过来的字段值
String strsql = "select E_Id,E_Name,E_Sex,E_Position,E_Organisation,E_Phone,E_Address from Emp where C_Id ='" + PassUserid + " '";
SqlDataAdapter da = new SqlDataAdapter(strsql, conn);
DataSet ds = new DataSet();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
conn.Close();
}
}
A页面,在GridView控件中加一列HypLinkField,其Text值为:详细信息。设置DataNavigateUrlFormatString属性为“~/B..aspx”?C_Id";DataNavigateUrlField属性填写要传递的字段名:C_Id。B页面的.cs文件Load函数中写下以上代码。这样,在A页面点击"详细信息”就能跳转到B页面,在B页面显示Emp表中与C_Id相应的值详细信息。
  
这种情况下,使用Response.Redirect("B..aspx");刷新时,这些显示的信息就会消失。而使用Server.Transfer则不会出现这种状况。
2.使用Response.Redirect刷新本页面不会造成显示信息消失的情况:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
String strConn = "server=.;database=ComInfo;integrated security=true;";
String PassUserid = Session["C_Id"].ToString();
SqlConnection conn = new SqlConnection(strConn);
conn.Open();
string strsql = "select E_Id,E_Name,E_Sex,E_Position,E_Organisation,E_Phone,E_Address from Emp where C_Id ='" + PassUserid + " '";
SqlDataAdapter da = new SqlDataAdapter(strsql, conn);
DataSet ds = new DataSet();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
conn.Close();
}
}
这次页面间传值使用的方法是:Session,在A中用Session["C_Id"]=strId,记录下C_Id的值,在B页面中获取。之后,不管用Response.Redirect还是server.transfer刷新页面,都不会造成数据消失。
分析:第一种方法传递到B页面的值,通过Response.redirect刷新后会释放,导致查询语句查找不到相应的信息。以后再用第一方法进行页面间传值时,要注意使用的跳转语句,不要出现第一种状况。
以下是Server.Transfer和Response.Redirect的对比
1. Server.Transfer只能够转跳到本地虚拟目录指定的页面,而Response.Redirect则十分灵活;
2. Server.Transfer可以将页面参数方便传递到指定页面;
3. Server.Transfer跳到别的页面后,浏览器显示的地址不会改变,因为重定向完全在服务器端进行,浏览器根本不知道服务器已经执行了一次页面变换。
4. Server.Transfer可以减少客户端对服务器的请求;
5.Server.Transfer方法把执行流程从当前的.aspx文件转到同一服务器上的另一个.aspx页面。调用Server.Transfer时,当前的.aspx页面终止执行,执行流程转入另一个.aspx页面,但新的.aspx页面仍使用前一.aspx页面创建的应答流。 Response.Redirect则是客户端第一次请求服务器返回状态代码302及新URL,客户端再次请求新URL,服务器再返回新页面,比Server.Transfer多一次应答。
1. Server.Transfer和Response.Redirect的更多相关文章
- Server.Transfer VS Response.Redirect – Simplified
		
https://www.codeproject.com/Articles/775221/Server-Transfer-VS-Response-Redirect-Simplified Introduc ...
 - Server.Transfer 和 Response.Redirect 用法区别
		
在ASP.NET中,在后台传值方式目前大多都是用 Response.Redirect("页面地址") 来重定向页面的,但是现在还有一种方式也可以达到重定向页面的作用,而且在某些时刻 ...
 - Server Transfer()和Response.Redirect()的使用
		
一.Server Transfer() Server.Transfer:对于当前请求,终止当前页的执行,并使用指定的页url路径来开始执行一个新页. 1. Server.Transfer只能够转跳到本 ...
 - Server.Transfer和Response.Redirect区别
		
根本上,Response是叫浏览器去重新转向到指定的网页,而Server自然是发生在服务器端为主了,因此会有以下区别:1. Server.Transfer只能够转跳到本地虚拟目录指定的页面,而Resp ...
 - 页面跳转 Server.Transfer和 Response.Redirect的区别
		
1.Server.Transfer 用于把处理的控制权从一个页面转移到另一个页面,在转移的工程中没有离开服务器内部控件(如request,session等)保存的信息不变.因此你能从a页面跳转到b页面 ...
 - Server.Transfer和Response.Redirect的区别
		
(1)Server.Transfer方法: Server.Transfer("m2.aspx");//页面转向(服务器上执行). 服务器停止解析本页,保存此页转向前的数据后,再使页 ...
 - asp.net知识汇总-页面跳转Server.Transfer和Response.Redirect
		
1. Server.Transfer 服务器端跳转 webform1.aspx跳转到webform2.aspx页面 webform1.aspx代码如下: protected void Page_Loa ...
 - c#页面重定向,Server.Transfer 和 Response.Redirect
		
Server.Transfer() 重定向发生在服务器端,把处理的控制权从当前页面转移到另一个页面,在转移的工程中没有离开服务器内部控件(如request,session等)保存的信息不变. 1.只能 ...
 - ASP.NET页面传值之Server.Transfer 和Response.Direct
		
先看实例: B.apsx: public string TextBox1Text { get { ...
 
随机推荐
- PHP上传文件出现文件名被截掉第一个字符的问题
			
最近用PHP做了一个简单的上传功能,结果出现了一个意想不到的问题.我上传的文件,在获取$_FILES的时候发现文件名的第一个字符被截掉了,因为最开始上传的一直是数字或者字母为名称的文档,也没有太在意这 ...
 - Linux企业级项目实践之网络爬虫(26)——线程池
			
一旦有一个抓取请求开始,就创建一个新的线程,由该线程执行任务,任务执行完毕之后,线程就退出.这就是"即时创建,即时销毁"的策略.尽管与创建进程相比,创建线程的时间已经大大的缩短,但 ...
 - 【android】adb连接几个常见问题(遇到再新增)
			
不知道为什么,每次连接手机,都提示 adb server is out of date,偶尔也会提示not found 每次去百度,都好多方法---终于有一种方法非常靠谱,遂,记录之--- 问题一:o ...
 - HDOJ(HDU)  1562  Guess the number(水题,枚举就行)
			
Problem Description Happy new year to everybody! Now, I want you to guess a minimum number x betwwn ...
 - WinForm ListControl MouseWheel Envent
			
最近在使用Listbox开发程序的时候, 遇到MouseWheel event 异常. 设置如下: 1. DrawModel:ownerDrawVariable. 2. InternalHeight: ...
 - [LeetCode] 230. Kth Smallest Element in a BST 解题思路
			
Given a binary search tree, write a function kthSmallest to find the kth smallest element in it. Not ...
 - solr索引
			
solr索引 当我们真正进入到Lucene源代码之中的时候,我们会发现: • Lucene的索引过程,就是按照全文检索的基本过程,将倒排表写成此文件格式的过程. • Lucene的搜索过程,就是按照此 ...
 - 【转】Windows下使用VS2008编译OpenCV 2.1 添加Intel TBB和Python支持
			
Windows下使用VS2008编译OpenCV2.1 添加Intel TBB和Python支持 步骤: 1.仔细阅读OpenCV官网上的InstallGuide:http://opencv.will ...
 - WINDOWS OPTIMIZE
			
WIN10 SHUT DOWN AUTOMATICALLY UPDATE 1.service -> windows update 2.gpedit ->计算机配置 - 管理模板 - Win ...
 - C语言文件详解
			
1.C语言FILE类,在stdio.h头文件中,FILE类是一个结构体:定义如下: 通过typedef定义了 文件类型 的别名: “FILE”,这样以后需要读写文件的时候直接定义FILE就行了. ...