ASP.Net将文本字段值传递给不同网页上的标签

时间:2014-08-08 16:41:17

标签: c# asp.net

我有一个名为webForm1的页面,这个页面包含一个文本字段,当用户输入一个值时,我希望该值显示在webForm2的标签上,当我这样做时,我收到一个错误: 由于其保护级别

,Label1无法访问

这就是我在webForm1中所做的事情

webForm2 webform = new webForm2();
webform.Label = textBox1.Text;
Response.redirect("~/webForm2.aspx");

但是上面的工作没有用,我是编程新手,不熟悉类和复杂编程,在标签中获取文本框值的最简单方法是什么?

谢谢。

2 个答案:

答案 0 :(得分:4)

您无法在当前页面中实例化页面类(webForm2)。您必须以另一种方式将值传递给第二页,然后绑定标签。正如Jason P所说,ASP.NET框架为您实例化webForm2页面,您无法自己完成。

如果数据不敏感,请使用Query String

Response.Redirect("~/webForm2.aspx?label=" + textBox1.Text);

这会将用户重定向到网址为whatever.com/webForm2.aspx?label=whatevervalue的网页。在第二页上,您可以从查询字符串中提取文本并将其绑定到标签:

public void Page_Load(object sender, EventArgs e)
{
    Label.Text = Request.QueryString["label"].ToString();
}

答案 1 :(得分:3)

与WinForms不同,您不会像这样实例化下一个表单。基本上,您的前两行对于WebForms是不正确的。第三行是您想要集中注意力的地方。您将用户重定向到第二个表单,允许框架负责实例化它。

这是因为WebForms尽管是" forms"仍然是一个HTTP Web应用程序,并通过请求和响应完成所有事情。通过发出重定向,您告诉客户放弃当前页面并为指定页面发出新请求。

有很多方法可以将值发送到下一页。您可以将它存储在某些持久性介质(例如数据库)中,您可以使用会话状态等。可能目前最简单的方法是将其包含在查询字符串中:

Response.Redirect("~/webForm2.aspx?label=" + textBox1.Text);

然后在下一页中,您将获得以下字符串:

Request.QueryString["label"]

可能希望首先对文本值进行网址编码,我不知道Redirect()是否为您做了这些。还要记住,这不是一个安全的"将数据从一个页面传输到下一个页面,因为客户端具有修改URL中的值的完全访问权限。因此,如果这是敏感的数据,那么您将要查看其他方法。 (请记住,"敏感"可能是一个相对的术语......信息本身可能不敏感,但您可能会在下一页上使用它来处理系统敏感的事情,我们可以这样做。从发布的代码中了解到。)