会话变量问题

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");
}