ASP.NET跨页面的控件调用

 

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.csdn.net/gishero/article/details/5290192

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值