System.NullReferenceException错误C#ASP.NET

时间:2019-06-12 23:47:42

标签: c#

我正在尝试从另一个页面获取值,为此,我正在使用会话。如果变量为null(用户永远不会在其他页面上输入),我的变量等于5,但是由于某种原因,我收到一条错误消息,说它为null。

因此,正在发生的事情是用户将在浏览器中转到index.aspx并输入其值。由于他们没有进入另一页,因此Session [“ StockSnickers”]将为空,因为他们没有填写文本框。现在,我希望将其设置为5。如果userSnickers小于5,则他们将被重定向到另一个页面,在该页面中他们将在表数据中看到它。

我的问题是,它说它为null。我该如何解决?

错误: enter image description here

Index.aspx

  protected void btnSubmit_Click(object sender, EventArgs e)
        {

        int userSnickers = int.Parse(txtAmountSnickers.Text);

        int stockSnickers = (int)Session["StockSnickers"];


        if (Session["StockSnickers"] == null)
        { 
            stockSnickers = 5;
        }

        if (stockSnickers < userSnickers)
        {
            lblSnickersError.Text = "Please enter a smaller value!";
        }
        else
        {
            if (Page.IsValid)
            {
                using (StoreContext context = new StoreContext())
                {
                    /*Validate*/
                    Order orders = new Order();
                    orders.Snickers = txtAmountSnickers.Text;
                    orders.Twix = txtAmountTwix.Text;
                    orders.Milkyway = txtAmountMilk.Text;
                    orders.KitKat = txtAmountKitKat.Text;
                    context.Order.Add(orders);
                    context.SaveChanges();
                    Response.Redirect("view_application.aspx");
                }
            }
        }

Inventory.aspx:

 public void someMethod() { 
        string snickersInventory = txtInventorySnickers.Text;
        int stockSnickers = Int32.Parse(snickersInventory);
        Session["StockSnicker"] = stockSnickers;
   }

1 个答案:

答案 0 :(得分:0)

int stockSnickers = (int)Session["StockSnickers"];


if (Session["StockSnickers"] == null)
{ 
    stockSnickers = 5;
}

如果StockSnickersSession中不存在,则上述代码将引发异常,因为您试图将null强制转换为int。关键是要扭转逻辑,以免发生这种情况:

int stockSnickers = 5;


if (Session["StockSnickers"] != null)
{ 
    stockSnickers = (int)Session["StockSnickers"];
}