我正在为Visual Studio 2015中的学校项目工作。我有两个页面,都有一个姓氏文本框。我需要将表单1上的姓氏转移到表单2上的姓氏文本框。
这就是我所拥有的:
FORM 1 :点击事件下的按钮:
Session["Lname"] = TextBox2.Text;
FORM 2 :页面加载
if (IsPostBack)
{
lastName.Text = (string)Session["Lname"];
}
这可能是一个简单的解决方案,我无法看到,可能需要第二眼。
答案 0 :(得分:1)
好的,这是你需要做的。下次你上课的时候,去面对你的老师,教你用这种方式编码。认真。我很乐意辩论他想要做什么。
有几种方法可以解决这个问题:
将信息放在第1页的会话中,然后重定向。这基本上就是你想要的。这种方法的问题在于它使应用程序有状态,这在某些缩放情况下可能会有问题。很难找到任何人建议以这种方式使用状态,特别是因为使用了无状态的ASP.NET MVC。
您可以更改表单的目标,使其提交到表单2而不是表单1.这可以通过更改页面的PostBackUrl属性来完成。这种方法的问题是您可以轻松地使用一个页面。除了少数情况,我认为没有理由这样做。如果你想走这条路,请检查this page。
还有其他变化。你甚至可以写下这两种方法并给你的教授留下深刻的印象,然后拍他的脸,并告诉他如何在一个页面中完成这项工作。或者,更好的是,在他迄今为止所做的一切之上向他展示一个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();