您的位置:首页 > Web前端

iscrosspagepostback 、IsPostBack、PreviousPage、IsCallback区别和Server.Transfer(),Response.Redirect()和PostBackUrl的跨页面效果比较

2009-12-27 20:48 561 查看
通常有必要了解调用 ASP.NET 网页的方式:是由原始请求 (HTTP GET)、回发 (HTTP POST)、来自其他页的跨页发送 (HTTP POST) 调用的,还是由来自其他页(使用 Transfer 方法或使用浏览器中的回调)的传送调用的。Page 类公开可用于确定页调用方式的属性集。

确定调用 ASP.NET 网页的方式

检查以下 Page 类属性的值,然后参照下表来确定页的调用方式:

IsPostBack

PreviousPage

IsCrossPagePostBack

IsCallback

下表列出了页调用方式及对应的 Page 属性值。

调用方法属性值
原始请求

IsPostBack 设置为 false

PreviousPage 设置为 null(在 Visual Basic 中为 Nothing)。

IsCallback 设置为 false

回发

IsPostBack 设置为 true

PreviousPage 设置为 null(在 Visual Basic 中为 Nothing)。

IsCallback 设置为 false

跨页发送

IsPostBack 设置为 false

PreviousPage 引用源页。

IsCrossPagePostBack 设置为 true

IsCallback 设置为 false

服务器传输

IsPostBack 设置为 false

PreviousPage 引用源页。

PreviousPage 中引用的 IsCrossPagePostBack 设置为 false

IsCallback 设置为 false

回调

IsPostBack 设置为 false

PreviousPage 设置为 null(在 Visual Basic 中为 Nothing)。

IsCallback 设置为 true

1. Server.Tranfser方法,如Server.Transfer("~/Page2.aspx");
注意:参数中不能带查询参数的。
效果:在Page2.aspx.cs中,IsCrossPagePostBack属性为false。
PreviousPage是可以用的。
Windows的URL是没有变化的,相当于还是自身Page响应,只是用另外一个Page的页面来填充原有页面。

2. Response.Redirect方法,如Response.Redirect("Page2.aspx")
注意:页面中可以带参数,如Response.Redirect("Page2.aspx?parameter1="+Server.UrlEncode("<xml>123</xml>"));
Windows的URL用方法中的参数值替换。
由于参数值中带有特殊编码,需要在Page2.aspx中添加ValidateRequest="false"属性,否则提示"A potentially dangerous Request.QueryString value was detected from the client "的错误。
Page2中通过Request获取URL中包含的参数。
Page2中PreviousPage为null。
IsCrossPagePostBack为false。

3. PostBackUrl属性
<asp:Button ID="CrossPagePost" runat="server" PostBackUrl="~/Page2.aspx" Text="CrossPagePost" />
与Server.Transfer相同的是,PreviousPage可用,IsCrossPagePostBack属性为false。
不同之处是URL改变了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐