Response.Redirect和Server.Transfer的区别

Response.Redirect和Server.Transfer的区别(粗略阐述)

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

以达到重定向页面的作用,而且在某些时刻会起到一种很棒的效果,那就是使用 Server.Transfer("页面地址") 来重定向地址。

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

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

简单的阐述:

Response.Redirect 是通知客户端浏览器(客户端浏览器,地址栏地址发生变化)跳转的。而Server.Transfer是在服务端跳转(客户端浏览器,地址栏地址不发生变化)简单的来说,Response.Redirect需要多走一个来回。而,Server.Transfer能少走一个。Response.Redirect 对于客户端浏览来说,速度可能会慢点,但对于服务端能少些负担;而Server.Transfer对于客户端浏览会快一些(因为少走一个来回),但服务器负担会大一些。

数据保密
1、Response.Redirect后地址会变成跳转后的页面地址。
2、Server.Transfer后地址不变,隐藏了新网页的地址及附带在地址后边的参数值。具有数据保密功能。
传递的数据量(即:网址后附带的参数):
利用网址来传递数据,必须注意的是网址的编码,要编码的原因是,有此字符有特殊意义,例如:&,它是参数的分隔符号,解决的方法是必须修改: 调用Server.URLEncode(变量)对要传递的数据加以编码。
1、Response.Redirect能够传递的数据以2KB为限。
2、传递的数据超过2KB时,务必使用Server.Transfer。

代码演示:

第一个页面:Num1.aspx.cs

前台代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Num1.aspx.cs" Inherits="跳转.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <table>
                <tr>
                    <td>用户名:
                        <asp:TextBox runat="server" ID="txt_name" />
                        <asp:RequiredFieldValidator ID="rfv_name" runat="server" ErrorMessage="请输入用户名" ForeColor="Red" ControlToValidate="txt_name"></asp:RequiredFieldValidator>

                    </td>
                    <td>密码:
                        <asp:TextBox runat="server" ID="txt_pwd" />
                        <asp:RequiredFieldValidator ID="rfv_pwd" runat="server" ErrorMessage="请输入密码"  ForeColor="Red" ControlToValidate="txt_pwd"></asp:RequiredFieldValidator>

                    </td>
                    <td>
                        <asp:Button Text="登录" runat="server" ID="btn_login" OnClick="btn_login_Click" />
                    </td>
                </tr>
            </table>
        </div>
    </form>
</body>
</html>

        后台代码:

Response.Redirect方法:

 protected void btn_login_Click(object sender, EventArgs e)
        {
            string name = txt_name.Text.Trim();
            string pwd = txt_pwd.Text;
            //Response.Redirect 传值
            Response.Redirect($"Num2.aspx?name={name}&&pwd={pwd}");
        }

演示结果:

 地址栏显示跳转的信息,地址为跳转后第二个页面的地址

Server.Transfer方法

 protected void btn_login_Click(object sender, EventArgs e)
        {
            string name = txt_name.Text.Trim();
            string pwd = txt_pwd.Text;
            //Server.Transfer 传值
            Server.Transfer($"Num2.aspx?name={name}&&pwd={pwd}");
        }

演示结果:

地址栏没有显示跳转的信息,地址栏地址仍为第一个页面的地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值