c# asp.net 学习笔记 WEB页面如何访问另一个WEB页面的控件数据

 在Vs2005中新建一个Web项目,添加两个Web窗体(Default、Default2),在Default窗体上添加两个标准控件,一个TextBox(TextBox1)、一个Button(Button1),设置Button1的PostBackUrl属性指向Default2窗体。那么如何在Default2窗体上显示那个TextBox1所填写的内容呢?

      上网Google一下,发现提供的方法大致有三种:

            1、在Button1的Click事件中,把TextBox1的内容封装到一个Url中,然后,重定向到Default2窗体。

private   void  button1_click ( object  sender, system.eventargs e) 
 { 
     string  url  =   " ~/Default2.aspx?TextBox1= "   +  TextBox1.Text;
     Response.Redirect(url); 

 }

 最后,在Default2窗体的page_load事件中读取数据。

protected   void  Page_Load( object  sender, EventArgs e)
{
    Response.Write(Request.Params[ " TextBox1 " ]);
}

这种方式不是我想象的那种。

 

  2、 使用session变量

                把控件中的值存在session变量中。

private   void  button1_click ( object  sender, system.eventargs e) 
{
     Session[ " TextBox1 " ]  =  TextBox1.Text;
     Server.Transfer( " ~/Default2.aspx " );
} 

 然后在Default2窗体的page_load事件中读取数据。

protected   void  Page_Load( object  sender, EventArgs e)
{
     Response.Write(Session["TextBox1"].ToString());
     Session.Remove("TextBox1");
}

这种方式也不是我想象的。

   3、使用server.transfer 

                在Default代码页中,添加一下代码

public   string  TextBoxValue
{
         get  {  return   this .TextBox1.Text; }
         set  {  this .TextBox1.Text  =  value; }
}

protected   void  Button1_Click( object  sender, EventArgs e)
{
        Server.Transfer( " ~/Default2.aspx " );
}

Default2的page_load代码

 protected   void  Page_Load( object  sender, EventArgs e)
 {
        ASP.default_aspx wf1;
        wf1  =  (ASP.default_aspx)Context.Handler;
        Response.Write(wf1.TextBoxValue);
}   

这种方法与我想象的一致,是不是忒麻烦了?

 

能不能不使用Click事件,直接设置button的PostBackUrl属性呢?

运行出现错误," wf1 = (ASP.default_aspx)Context.Handler; ” 无法将类型为“ASP.default2_aspx”的对象强制转换为类型“ASP.default_aspx”。

能不能去掉Default代码中定义的属性,直接在Default2中访问TextBox1控件呢?

  protected   void  Page_Load( object  sender, EventArgs e)
  {
        ASP.default_aspx wf1;
        wf1  =  (ASP.default_aspx)Context.Handler;
        Response.Write(wf1.TextBox1.Text);
  }   

但在编译时,出现错误:TextBox1不可访问,因为它受保护级别限制。

 

晕!

到底,Default页面向Default2页面发送了什么数据?设置Button1的PostBackUrl属性指向Default2窗体。在Default2页面中添加下面的代码

protected   void  Page_Load( object  sender, EventArgs e)
{
       Response.Write( " <table> " );
      
         for  ( int  i  =   0 ; i  <  Request.Params.Count; i ++ )
            {
                Response.Write( " <tr><td> " );
            Response.Write(Request.Params.GetKey(i));
            Response.Write( " </td><td> " );
            Response.Write(Request.Params[i]);
            Response.Write( " </td></tr> " );
            }
            Response.Write( " </table> " );
}

执行程序,在TextBox1中输入“去死”,点击Button1,跳转到Default2页面,竟然发现:

 

哦,访问另一个页面的控件数据原来这么简单!

补充一种方法:

   Default2的page_load中添加如下代码

 protected   void  Page_Load( object  sender, EventArgs e)
 {
        TextBox tb = (TextBox)PreviousPage.FindControl("TextBox1");
        Response.Write(tb.Text);
 }

 

————————————————
版权声明:本文为CSDN博主「一等兵」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zzhdi/article/details/2229947

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值