会话变量问题
Issue with Session Variables
所以我正在尝试使用 C# 和 ASP.net 制作一个简单的银行网站,而且我只是第一次学习会话变量。我的初始账户余额为 1000 美元,我想将其转移到另一个页面并通过提款或存款更新余额,然后更新余额。这是我的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Project4.Forms
{
public partial class Services : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnSubmit_Click1(object sender, EventArgs e)
{
double userInput = double.Parse(txtAmount.Text);
Session["userInput"] = userInput;
Session["balance"] = 1000.00;
double balance = Convert.ToDouble(Session["balance"]);
Session["userAction"] = ddlSelectService.SelectedItem.Text;
if (ddlSelectService.SelectedItem.Text == "Withdrawl")
{
balance -= userInput;
}
else if (ddlSelectService.SelectedItem.Text == "Deposit")
{
balance += userInput;
}
else
{
}
Response.Redirect("Status.aspx");
}
}
}
我知道我的问题的根源可能是原来的 Session["balance"] = 1000.00;
但我不确定如何申报起始金额,然后当我 return 到此页面时它不会影响余额从结果页面。感谢任何帮助,正如我一开始所说的,这是一个准系统的简单 atm 网站,请不要提出任何太疯狂的建议,因为我是初学者。
我不做 asp.net,所以这只是一个猜测,但如果它是 null
,也许可以尝试只设置默认值,例如:if (Session["balance"] == null) Session["balance"] = 1000;
。这似乎也应该出现在 Page_Load
事件中,而不是 btnSubmit_Click
事件中,因为它只需要发生一次。
最后,不要忘记在设置新余额后更新会话变量:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["balance"] == null) Session["balance"] = 1000;
}
protected void btnSubmit_Click1(object sender, EventArgs e)
{
double userInput;
if (!double.TryParse(txtAmount.Text, out userInput))
{
ClientScript.RegisterStartupScript(this.GetType(), "myalert",
"alert('Input must be a valid double');", true);
return;
}
Session["userInput"] = userInput;
double balance = Convert.ToDouble(Session["balance"]);
Session["userAction"] = ddlSelectService.SelectedItem.Text;
if (Session["userAction"] == "Withdrawl")
{
balance -= userInput;
}
else if (Session["userAction"] == "Deposit")
{
balance += userInput;
}
Session["balance"] = balance;
Response.Redirect("Status.aspx");
}
所以我正在尝试使用 C# 和 ASP.net 制作一个简单的银行网站,而且我只是第一次学习会话变量。我的初始账户余额为 1000 美元,我想将其转移到另一个页面并通过提款或存款更新余额,然后更新余额。这是我的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Project4.Forms
{
public partial class Services : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnSubmit_Click1(object sender, EventArgs e)
{
double userInput = double.Parse(txtAmount.Text);
Session["userInput"] = userInput;
Session["balance"] = 1000.00;
double balance = Convert.ToDouble(Session["balance"]);
Session["userAction"] = ddlSelectService.SelectedItem.Text;
if (ddlSelectService.SelectedItem.Text == "Withdrawl")
{
balance -= userInput;
}
else if (ddlSelectService.SelectedItem.Text == "Deposit")
{
balance += userInput;
}
else
{
}
Response.Redirect("Status.aspx");
}
}
}
我知道我的问题的根源可能是原来的 Session["balance"] = 1000.00;
但我不确定如何申报起始金额,然后当我 return 到此页面时它不会影响余额从结果页面。感谢任何帮助,正如我一开始所说的,这是一个准系统的简单 atm 网站,请不要提出任何太疯狂的建议,因为我是初学者。
我不做 asp.net,所以这只是一个猜测,但如果它是 null
,也许可以尝试只设置默认值,例如:if (Session["balance"] == null) Session["balance"] = 1000;
。这似乎也应该出现在 Page_Load
事件中,而不是 btnSubmit_Click
事件中,因为它只需要发生一次。
最后,不要忘记在设置新余额后更新会话变量:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["balance"] == null) Session["balance"] = 1000;
}
protected void btnSubmit_Click1(object sender, EventArgs e)
{
double userInput;
if (!double.TryParse(txtAmount.Text, out userInput))
{
ClientScript.RegisterStartupScript(this.GetType(), "myalert",
"alert('Input must be a valid double');", true);
return;
}
Session["userInput"] = userInput;
double balance = Convert.ToDouble(Session["balance"]);
Session["userAction"] = ddlSelectService.SelectedItem.Text;
if (Session["userAction"] == "Withdrawl")
{
balance -= userInput;
}
else if (Session["userAction"] == "Deposit")
{
balance += userInput;
}
Session["balance"] = balance;
Response.Redirect("Status.aspx");
}