【整理】asp.net新特性之跨页投递

跨页投递

让web开发人员决定在进行提交操作时将窗体数据发送到何处。

前提条件

必须是实现了IButtonControl接口的控件,即该控件必须有PostBackUrl属性和Click事件。实现方式:

<asp:Button runat="server" Text="Button" PostBackUrl="~/TargetPage.aspx"/>

从源页获取信息

通过Page.PreviousPage属性获得对源页的引用;

如果目标页和源页位于不同的应用程序,则不能使用Page.PreviousPage来获取对源页的引用,但可通过Request.Form["控件ID"]来获取源页发送的数据。

源页代码

<asp:TextBox runat="server"></asp:TextBox>

<asp:Button runat="server" Text="Button" PostBackUrl="~/TargetPage.aspx"/>

目标也代码

Page prePage = Page.PreviousPage;

if (prePage != null)

{

TextBox textBox1 = prePage.FindControl("TextBox1") as TextBox;

if (textBox1 != null)

{

Response.Write(textBox1.Text.Trim());

}

}

获取源页的公共属性

源页代码

aspx页面

<asp:Button runat="server" Text="Button" PostBackUrl="~/TargetPage.aspx"/>

aspx.cs页面

public string CurrentCity

{

get { return "四川"; }

}

目标页面

aspx页面

<%@ PreviousPageType VirtualPath="~/SourcePage.aspx" %>

aspx.cs页面

Response.Write(PreviousPage.CurrentCity.Trim());

检查目标页中的回发

1.在跨页投递过程中,源页的内容被提交到目标页,执行的是HTTP POST操作

2.在源页跨页投递到目标页的过程中,虽然执行的是POST操作,但目标页的IsPostBack仍然为false。

3.通过在目标页中使用PreviousPage.IsCrossPagePostBack属性来判断目标页是否由于跨页投递接收内容。

跨页发送与Server.Transfer

1.跨页发送是一种基于客户端的传输,Server.Transfer是一种基于服务端的传输

2.用PostBackUrl和Server.Transfer定位到的目标页面都可以使用PreviousPage获取对源页的引用

3.通过PreviousPage.IsCrossPagePostBack属性确定是否是跨页投递

4.PostBackUrl可以重定向到任何页面,而不仅仅是同一个应用程序的页面;Server.Transfer只能定向到同一个应用程序中的页面。

5.在使用Server.Transfer定向到另一个页面的时候,浏览器的URL始终指向的源页的路径,此时点击浏览器的后退和刷新按钮可能会触发异常。