应用程序和页面框架 -- ASP.NET2.0 跨页面的传送

ASP.NET2.0中的一个功能在ASP.NET1.0/1.1很难实现,即进行跨页面的传送.

跨页面传送就是提交窗体,并把这个窗体和所有的控件值都传送给另一个页面.

 

在ASP.NET1.0/1.1中创建的页面都只传送给它自己,控件值都在这个页面实例中处理.用Page.IsPostBack区分页面的第一次请求和回送.但是开发人员仍希望把数据传送给另一个页面,并在该页面上处理第一个页面的控件值.ASP.NET2.0 实现了这个功能,并且操作过程非常简单.

 

要获得从前一个页面传送过来的控件值,有两种方法实现.

<1>创建该控件类型的实例,使用PreviousPage.FindControl("控件ID").

<2>创建该控件的属性.导入<%@PreviousPageType VirtualPath="Page1.aspx" %> 

VirtualPath属性表示指向的页面. 

 

<1>例子:使用Previous.FindControl 将 Page1.aspx 的控件值 传到Page2.aspx中

Page1.aspx

 

<body>
    <form id="form1" runat="server">
    <div>
        在文本框输入值,点击按钮,将文本框TextBox值赋予标签Label<br />
        <asp:TextBox ID="TextBox1" runat="server" ></asp:TextBox><br />
        <asp:Button ID="Button1" runat="server" Text="提交到Page1.aspx" OnClick="Button1_Click" /><br />
        <asp:Button ID="Button2" runat="server" Text="提交到Page2.aspx" PostBackUrl="~/Page2.aspx" /><br />
        <br />
        <asp:Label ID="Label1" runat="server"></asp:Label><br />
    </div>
    </form>
</body>

 

Page1.aspx.cs

 

protected void Button1_Click(object sender, EventArgs e)
{
    Label1.Text = "TextBox的值:"+TextBox1.Text;
}

 

 

Page2.aspx

<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server"></asp:Label></div>
    </form>
</body>

 

Page2.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    TextBox textBox1 = (TextBox)PreviousPage.FindControl("TextBox1");//Page1 要获得的控件ID
    Label1.Text = "Page1.aspx的TextBox1的值:" + textBox1.Text;
}

 

 

 

<2>例子:使用创建控件属性的方法

Page1.aspx和Page.aspx.cs 并没有什么改变

 

Page2.aspx 添加指令

<%@PreviousPageType VirtualPath="Page1.aspx" %>  

page2.aspx.cs 添加属性

public TextBox textbox1

{

    get{ 

             return TextBox1;

        }

}

//为了处理Page1.aspx中的属性,必须把PreviousPage 属性强类型化为Page1.aspx.所以要使用PreviousPageType指令. 使用VirtualPath指向Page1.aspx后,就可以使用智能感应查看Page1.aspx的属性了.

注:有心人会想,如果在未使用Page1.aspx的按钮跳转到Page2.aspx.而且直接请求Page2.aspx怎么办?..答案是:报异常.可能有人会想到try...catch...来捕获不处理.其实 Microsoft 早定义了一个属性 -- IsCrossPagePostBack.此属性与IsPostBack 属性很类似,使用它可以检查请求是否来自Page1.aspx.

使用方法也和IsPostBack 一样,在PageLoad事件中

if(PreviousPage.IsCrossPagePostBack)

{

          //....代码块

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值