在开发中经常能用到跨页面的传送,所谓的跨页面传送就是把(a.aspx)窗体和页面所有的控件值提交给另一个窗体(b.aspx)。主要实现原理是使用服务器按钮的PostBackUrl属性
第一种方法:
在a.aspx页面
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" Text="提交本页" OnClick="Button1_Click" /> <asp:Button ID="Button2" runat="server" Text="跨页提交" PostBackUrl="~/b.aspx" OnClick="Button2_Click" />
在 b.aspx 页面接收
TextBox txtValue = PreviousPage.FindControl("TextBox1") as TextBox;
第二种方法:
在a.aspx.cs 页面加入, TextBox1就是要在b页面获取的控件
public TextBox a_textbox { get { return TextBox1; } }
在b.aspx 页面加入
<%@ PreviousPageType VirtualPath="a.aspx" %>
b.aspx.cs 页面 通过如下
PreviousPage.a_textbox.Text
以上两种方法 都可以实现跨页面传输数据,但是呢如果有人直接访问b 页面怎么办?如下就可以了
if (PreviousPage != null && PreviousPage.IsCrossPagePostBack) { //提交过来 } else { //用户直接访问的 Response.Redirect("a.aspx") }