我有一个名为webForm1的页面,这个页面包含一个文本字段,当用户输入一个值时,我希望该值显示在webForm2的标签上,当我这样做时,我收到一个错误: 由于其保护级别
,Label1无法访问这就是我在webForm1中所做的事情
webForm2 webform = new webForm2();
webform.Label = textBox1.Text;
Response.redirect("~/webForm2.aspx");
但是上面的工作没有用,我是编程新手,不熟悉类和复杂编程,在标签中获取文本框值的最简单方法是什么?
谢谢。
答案 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中的值的完全访问权限。因此,如果这是敏感的数据,那么您将要查看其他方法。 (请记住,"敏感"可能是一个相对的术语......信息本身可能不敏感,但您可能会在下一页上使用它来处理系统敏感的事情,我们可以这样做。从发布的代码中了解到。)