将会话数据从一种形式转移到另一种形式

时间:2017-02-12 02:01:14

标签: c# asp.net visual-studio-2015

我正在为Visual Studio 2015中的学校项目工作。我有两个页面,都有一个姓氏文本框。我需要将表单1上的姓氏转移到表单2上的姓氏文本框。

这就是我所拥有的:

FORM 1 :点击事件下的按钮:

Session["Lname"] = TextBox2.Text;

FORM 2 :页面加载

if (IsPostBack)
{
    lastName.Text = (string)Session["Lname"];
}

这可能是一个简单的解决方案,我无法看到,可能需要第二眼。

3 个答案:

答案 0 :(得分:1)

好的,这是你需要做的。下次你上课的时候,去面对你的老师,教你用这种方式编码。认真。我很乐意辩论他想要做什么。

有几种方法可以解决这个问题:

  1. 将信息放在第1页的会话中,然后重定向。这基本上就是你想要的。这种方法的问题在于它使应用程序有状态,这在某些缩放情况下可能会有问题。很难找到任何人建议以这种方式使用状态,特别是因为使用了无状态的ASP.NET MVC。

  2. 您可以更改表单的目标,使其提交到表单2而不是表单1.这可以通过更改页面的PostBackUrl属性来完成。这种方法的问题是您可以轻松地使用一个页面。除了少数情况,我认为没有理由这样做。如果你想走这条路,请检查this page

  3. 还有其他变化。你甚至可以写下这两种方法并给你的教授留下深刻的印象,然后拍他的脸,并告诉他如何在一个页面中完成这项工作。或者,更好的是,在他迄今为止所做的一切之上向他展示一个ASP.NET MVC版本,并告诉他你已经进入了现代时代。 ; - )

答案 1 :(得分:0)

您正试图在帖子后面加载第二个表单,尝试将其更改为:

if (!IsPostBack) { lastName.Text = (string)Session["Lname"]; }

祝学校好运!

答案 2 :(得分:0)

首先,在第1页中,您需要确保TextBox2.Text不为空或为空

if(TextBox2.Text != "" && TextBox2.Text != null)
{
  Session["Lname"] = TextBox2.Text;
}
else
{
 // just for test in case TextBox2.Text is null,
  Session["Lname"] = "it is null..";
}

然后您可以阅读第2页中的会话,如

lastName.Text = Session["Lname"].ToString();