asp.net中Response.Redirect与Server.Transfer的区别分析
程序员文章站
2024-03-07 11:16:51
server.transfer方法把执行流程从当前的aspx文件转到同一服务器上的另一个aspx页面。调用server.transfer时,当前的aspx页面终止执行,执行...
server.transfer方法把执行流程从当前的aspx文件转到同一服务器上的另一个aspx页面。调用server.transfer时,当前的aspx页面终止执行,执行流程转入另一个aspx页面,但新的aspx页面仍使用前一aspx页面创建的应答流。
如果用server.transfer方法实现页面之间的导航,浏览器中的url不会改变,因为重定向完全在服务器端进行,浏览器根本不知道服务器已经执行了一次页面变换。
response.redirect则是客户端第一次请求服务器返回状态代码302及新url,客户端再次请求新url,服务器再返回新页面,比server.transfer多一次应答。
一般来说如果需要在两个页面间共享数据,而且数据量比较大的时候,用transfer会比较合适,在第二个页面中可以直接使用前一页面的数据,
eg:
transfertopage.aspx
if(context.handler is transferfrompage)
{
transferfrompage post=(transferfrompage)context.handler;
startweekid=int32.parse(post.ddlstartweek.selectedvalue);
endweekid=int32.parse(post.ddlendweek.selectedvalue);
}
直接引用前一页面控件的值。
redirect可以传递一些较小字符串值。
response.redirect( "b.aspx?id=0&name=jeff ");
如果用server.transfer方法实现页面之间的导航,浏览器中的url不会改变,因为重定向完全在服务器端进行,浏览器根本不知道服务器已经执行了一次页面变换。
response.redirect则是客户端第一次请求服务器返回状态代码302及新url,客户端再次请求新url,服务器再返回新页面,比server.transfer多一次应答。
一般来说如果需要在两个页面间共享数据,而且数据量比较大的时候,用transfer会比较合适,在第二个页面中可以直接使用前一页面的数据,
eg:
transfertopage.aspx
复制代码 代码如下:
if(context.handler is transferfrompage)
{
transferfrompage post=(transferfrompage)context.handler;
startweekid=int32.parse(post.ddlstartweek.selectedvalue);
endweekid=int32.parse(post.ddlendweek.selectedvalue);
}
直接引用前一页面控件的值。
redirect可以传递一些较小字符串值。
response.redirect( "b.aspx?id=0&name=jeff ");
推荐阅读
-
asp.net中Response.Redirect与Server.Transfer的区别分析
-
asp.net中Request.QueryString与Request.Param的区别分析
-
asp.net中Session缓存与Cache缓存的区别分析
-
asp.net中Session缓存与Cache缓存的区别分析
-
ASP.NET笔记之 控件与母板的区别分析
-
asp.net 中静态方法和动态方法调用的区别实例分析
-
ASP.NET笔记之 控件与母板的区别分析
-
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
-
asp.net 中静态方法和动态方法调用的区别实例分析
-
实例分析java中重载与重写的区别