简单的ASP.NET问题

时间:2010-12-03 14:22:12

标签: asp.net webforms textbox label

我有两个网页表单。例如: a.aspx和b.aspx

在a.aspx中我有一个带ID="Textbox1"的文本框。 在b.aspx中,我有一个标有ID="Label1"

的标签

我希望当我打开 b.aspx Label1.text = Textbox1.Text ..

但是当我在 b.aspx Page_Load函数中写字时,intellisense不知道Textbox1

我该怎么做?

5 个答案:

答案 0 :(得分:3)

当用户请求.aspx时,ASP.NET会创建Page类(Web表单)的新实例,对其进行处理,然后将生成的HTML发送给用户。最后它会破坏页面实例。

单击ASP.NET页面上的按钮时,您“回发”到同一个URL(即,从a.aspx 返回 a.aspx )。接下来,ASP.NET执行一些魔术:它将用户输入表单元素的值映射到页面上的控件,如Textbox1

要跨页面共享值,您需要使用以下机制之一:

  • 直接发布到网页b 。对于惯用的ASP.NET方式,请参阅跨页面Posting in ASP.NET Web Pages

  • 将数据包含在网址本身中,例如,使用查询字符串:

    http://www.mysite.com/b.aspx?contents=foo

  • 将数据保存在 a session变量(或Cookie)中。除非将值确定为用户会话的范围(例如,设置时区),否则这不是一个好主意。此外,如果可扩展性很重要,您需要更加谨慎地使用会话。

  • 将数据保存在数据库中,然后在构建其他页面时检索它。

答案 1 :(得分:0)

很可能你有一些动作,比如点击a.aspx上的按钮就会把你带到b.aspx,对吗?在该按钮单击的功能中,您可以将文本框的内容添加到查询字符串并重定向到b.aspx。

response.redirect("b.aspx?contents=" + Textbox1.text);

然后在b.aspx中,在page_load中,你会这样做:

Label1.text = request("contents");

这就是你问的问题吗?如果你没有在intellisense中看到它,你可能只需要关闭并重新打开页面,以便它与设计器文件同步。

答案 2 :(得分:0)

可以通过多种方式完成。 在这里,我讲的是两种简单易行的方法 1. U可以将值作为参数发送到url中   如果你通过点击一个按钮,链接按钮等去b.aspx。你可以像这样添加它

 Response.Redirect("b.aspx?val="+text1.Text);

U can able to get the value by using 
String txt=Request.QueryString["val"];
  1. 您可以使用会话变量。因此,如果您使用会话变量,则可以从您的网站{aspx}中的任何页面中获取该值。

    会话[ “VAL”] = textBox1.Text; //第1页   Label1.Text = Session [“val”]。ToString(); //第2页

  2. 希望你试试这个

答案 3 :(得分:-1)

保存会话中的值。这样,用户可以键入大量文本,并且不会使URL看起来很难看。对URL的允许长度也有限制。

使用c#代码如下:

// create a new Session variable to store the users name
Session ( 'SomeText' ) = 'James';

// display the name in any page on your site
Out ( 'Your value is ' + Session ( 'SomeText' ) ); 

答案 4 :(得分:-1)

您始终可以使用Masterpages,并在母版页上公开公共属性。将此属性写入页面的视图状态,并且由于它是公共的,因此pageA可以写入值,而pageB可以读取该值。