ASP.NET3.5可以很简答的实现一个很有用的功能,既跨页面传送,
传统的提交窗体只会将窗体提交给它自己。而跨页面的提交,
会将page1的内容传送个page2,并在page2中使用page1中的控件。
① 跨页面传递的简单实现
页面一(Default.aspx)中的控件
<asp:TextBox ID="txtPageDefault" runat="server"></asp:TextBox>
<asp:Button ID="btnToPostBackPage" runat="server" Text="跨窗体提交"
PostBackUrl="~/PostBackPage.aspx" style="height: 21px" />
页面一的后台代码是不需要的,只要PostBackUrl="~/PostBackPage.aspx"这样注明要提交的目标页面就可以了
页面二(PostBackPage.aspx)前台控件
<asp:TextBox ID="txtPagePostBack" runat="server"></asp:TextBox>
页面二后台代码
TextBox box = (TextBox)PreviousPage.FindControl("txtPageDefault");
txtPagePostBack.Text = "前窗体内容:" + box.Text;
由此可以看到,实际上只要对提交按钮的PostBackUrl属性进行设置,就可以在目标页面很容易的访问到被提交的前一页面的空间内容
② 直接通过属性来访问前页面的控件
编译器会将页面中的控件编译为页面类之外不可访问的类型,所以为了使用PreviousPage类直接访问前页面的内容我们需要用设置属性的方式,将我们需要访问的控件公开
就上一个类子来看,首先我们需要向Default页面的后台田间代码,
表明属性DefaultText 来返回当前页面的TextBox控件
public partial class _Default : System.Web.UI.Page
{
public TextBox DefaultText
{
//定义为只读
get { return txtPageDefault; }
}
protected void Page_Load(object sender, EventArgs e)
{
}
}
其次,我们需要在接收端页面PostBackPage.aspx中的头部添加<%@ PreviousPageType %>指令如下
<%@ PreviousPageType VirtualPath="~/Default.aspx" %>
这样就表明PreviousPage是明确的指向Default.aspx页面
最后我们就可以在PostBackPage.as页面中使用被提交页面中的属性DefaultText ,也就是TextBox控件txtPageDefault的值了
像下面这样
TextBox tbox = PreviousPage.DefaultText;
txtPagePostBack.Text = "前窗体内容:" + tbox.Text;
转至:http://blog.youkuaiyun.com/gishero/article/details/5290192