我想知道使用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"]);
}
除非我一直在看这个并且错过了什么。我已经从MSDN上阅读了"How to: Read Values from Session State"。
答案 0 :(得分:6)
您说您已将PostBackUrl设置为第二页。如果你打算这样做,你需要使用Page.PreviousPage来访问你的文本框。但这是最简单的方法:
首先,单独留下PostBackUrl。将PostBackUrl设置为第二页意味着您告诉SECOND PAGE处理按钮点击,而不是第一页。因此,您的会话变量永远不会被设置,并且当您尝试拉取它时为null。
这应该适用于你。
是的,您也可以使用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();
}
}
编辑 - 确保您的按钮实际上被点击了。有人可以纠正我的错误,因为我在VB.NET中完成了大部分工作,而不是C#。但是,如果您未指定OnClick值,则不会调用您的函数。
<asp:Button ID="Button1" runat="server" Text="Click Me!" OnClick="submit_Click" />
答案 1 :(得分:0)
您发布的代码看起来很好,所以您的问题可能与设置有关。
检查此链接ASP.NET Session State Overview并特别注意无Cookie会话ID 和配置会话状态上的部分。
答案 2 :(得分:0)
我认为你没有添加会话。这就是我的做法。
第一页
protected void btnView_Click(object sender, EventArgs e)
{
foreach (ListItem li in lbxCheckDates.Items)
{
if (li.Selected == true)
{
lblMessage.Text = "";
string checkDate = lbxCheckDates.SelectedItem.Text;
Session.Add("CheckDates", checkDate);
Page.ClientScript.RegisterStartupScript(
this.GetType(), "OpenWindow", "window.open('Paystub.aspx','_newtab');", true);
}
}
}
第二页
protected void Page_Load(object sender, EventArgs e)
{
string checkDate = (string)(Session["CheckDates"]);
//I use checkDate in sql to populate a report viewer
}
所以和你的一起,我认为你需要..
protected void submit_Click(object sender, EventArgs e)
{
string name = txtFirstName.Text.Trim();
Session.Add("Name", name);
}
我认为你在第二页中的内容应该有效,但如果没有,就像添加ToString()一样..
lblName.Text = (string)(Session["name"]).ToString();
如果这有帮助,请告诉我!
答案 3 :(得分:0)
您是否在第一页上设置会话变量后进行重定向,如果是这样,您将无法正常工作(除非您知道诀窍)。结帐this article使其正常工作。基本上,使这项工作的方法是过载重定向方法。
Response.Redirect("~/newpage.aspx", false);
false参数阻止.net终止现有页面上的处理(实际写出会话状态)
答案 4 :(得分:0)
第二页
protected void Page_Load(object sender, EventArgs e)
{
if (Session["value"] != null)
{
Label1.Text = Session["value"].ToString();
}
else
{
Label1.Text = "Sorry,Please enter the value ";
}
}
答案 5 :(得分:0)
您可以使用+-------------------------+
| CodeGenerated |
+-------------------------+
| select * |
| from tblTest |
| where Age >= 25 |
| and Age < 65 |
| and Salary > 15000.00 |
+-------------------------+
+--------+-------+-----+------------+---------------+
| TranID | FName | Age | Salary | MaritalStatus |
+--------+-------+-----+------------+---------------+
| 1 | Alex | 26 | 25000,0000 | Y |
| 4 | Paul | 64 | 74500,0000 | Y |
+--------+-------+-----+------------+---------------+
代替Server.Transfer()
答案 6 :(得分:-2)
对于第一页,请使用:
protected void Button1_Click(object sender, EventArgs e)
{
string value = TextBox1.Text;
Session["value"] = value;
Response.Redirect("~/Sessionpage.aspx");
}