我想知道使用 asp.net 会话在页面之间传递变量时出现什么问题。
我已将代码精简为一个文本框,以查看发生了什么。我只是想获取文本框的值并将其显示在确认页面上。单击该按钮时,它会将我转到第二页,但标签为空白。是的,我的回发网址指向第二页。
这是按钮点击:
protected void submit_Click(object sender, EventArgs e)
{
string name = txtFirstName.Text.Trim();
Session["name"] = name;
}
这是第二页的页面加载:
protected void Page_Load(object sender, EventArgs e)
{
lblName.Text = (string)(Session["name"]);
}
除非我已经看这个很久了并且错过了一些东西。我已经读过“如何:从会话状态读取值” http://msdn.microsoft.com/en-us/library/03sekbw5.aspx来自 MSDN。
您说您已将 PostBackUrl 设置为第二页。如果您打算这样做,则需要使用 Page.PreviousPage 来访问文本框。但这是最简单的方法:
首先,保留 PostBackUrl。将 PostBackUrl 设置为第二页意味着您告诉第二页处理按钮单击,而不是第一页。因此,您的会话变量永远不会被设置,并且当您尝试拉取它时它为空。
这应该对你有用。
是的,您也可以使用 QueryString 来执行此操作,但如果您不希望用户查看/编辑它,那么会话变量会更好。
protected void submit_Click(object sender, EventArgs e)
{
string name = txtFirstName.Text.Trim();
Session["name"] = name;
Response.Redirect("PageTwo.aspx");
}
然后在第二页(你并不真正需要 ToString()):
protected void Page_Load(object sender, EventArgs e)
{
if (Session["name"] != null)
{
lblName.Text = Session["name"].ToString();
}
}
EDIT-- 确保您的按钮点击确实被触发。有人可以纠正我的错误,因为我的大部分工作都是在 VB.NET 中完成的,而不是 C#。但如果您不指定 OnClick 值,您的函数将不会被调用。
<asp:Button ID="Button1" runat="server" Text="Click Me!" OnClick="submit_Click" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)