今天在使用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的更多相关文章

  1. Server.Transfer VS Response.Redirect – Simplified

    https://www.codeproject.com/Articles/775221/Server-Transfer-VS-Response-Redirect-Simplified Introduc ...

  2. Server.Transfer 和 Response.Redirect 用法区别

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

  3. Server Transfer()和Response.Redirect()的使用

    一.Server Transfer() Server.Transfer:对于当前请求,终止当前页的执行,并使用指定的页url路径来开始执行一个新页. 1. Server.Transfer只能够转跳到本 ...

  4. Server.Transfer和Response.Redirect区别

    根本上,Response是叫浏览器去重新转向到指定的网页,而Server自然是发生在服务器端为主了,因此会有以下区别:1. Server.Transfer只能够转跳到本地虚拟目录指定的页面,而Resp ...

  5. 页面跳转 Server.Transfer和 Response.Redirect的区别

    1.Server.Transfer 用于把处理的控制权从一个页面转移到另一个页面,在转移的工程中没有离开服务器内部控件(如request,session等)保存的信息不变.因此你能从a页面跳转到b页面 ...

  6. Server.Transfer和Response.Redirect的区别

    (1)Server.Transfer方法: Server.Transfer("m2.aspx");//页面转向(服务器上执行). 服务器停止解析本页,保存此页转向前的数据后,再使页 ...

  7. asp.net知识汇总-页面跳转Server.Transfer和Response.Redirect

    1. Server.Transfer 服务器端跳转 webform1.aspx跳转到webform2.aspx页面 webform1.aspx代码如下: protected void Page_Loa ...

  8. c#页面重定向,Server.Transfer 和 Response.Redirect

    Server.Transfer() 重定向发生在服务器端,把处理的控制权从当前页面转移到另一个页面,在转移的工程中没有离开服务器内部控件(如request,session等)保存的信息不变. 1.只能 ...

  9. ASP.NET页面传值之Server.Transfer 和Response.Direct

    先看实例: B.apsx:         public string TextBox1Text         {             get             {             ...

随机推荐

  1. 求四百万以内Fibonacci(number)数列偶数结果的总和

    又对啦...开心~~~~ 只是代码可能不符合PEP标准什么的... Each new term in the Fibonacci sequence is generated by adding the ...

  2. Moxon(摩克森)天线介绍

    一.Moxon(摩克森)天线介绍Moxon天线是一种方形天线,性质上类似二单元Yagi(八木),增益高,具有很强的方向性,按尺寸做好后几乎不用调试,阻抗50欧姆.在U段,天线尺寸小,便于携带,是一款非 ...

  3. Another Look at Events(再谈Events)

    转载:http://www.qtcn.org/bbs/simple/?t31383.html Another Look at Events(再谈Events) 最近在学习Qt事件处理的时候发现一篇很不 ...

  4. JavaScript 实现数组的foreach

    Array.prototype.forEach = function (action) { for (var i = 0; i < this.length; i++) { action(this ...

  5. 【转】ActionBar的基本用法

    原文网址:http://irtutsk.iteye.com/blog/2117707 ActionBar的组成: [1]AppIcon:标题区,显示应用程序图标和标题,也可以自定义. [2]ViewC ...

  6. openstack debugs

  7. linux系统下mySQL数据库 备份方法和脚本

    数据库备份1.创建个备份存储目录mkdir /root/backup/2.以下内容写到dbbackup.sh #!/bin/bash cd /data/db_backup/mysqldump -uad ...

  8. JS浏览器对象-History对象

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. MySQL慢查询(一) - 开启慢查询

    一.简介 开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能. 二.参数说明 slow_query_log 慢查询开启状态slow_q ...

  10. mac 环境下使用virtual box 虚拟机(win7)与主机之间互相ping通

    首先选择virtual box设置网络连接方式为网桥 混杂模式设置为全部允许 如下图: 进入虚拟机把虚拟机IP设置和主机在一个网段.如主机是192.168.1.100虚拟机可以设置为192.168.1 ...