我正在尝试从另一个页面获取值,为此,我正在使用会话。如果变量为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;
}
答案 0 :(得分:0)
int stockSnickers = (int)Session["StockSnickers"];
if (Session["StockSnickers"] == null)
{
stockSnickers = 5;
}
如果StockSnickers
在Session
中不存在,则上述代码将引发异常,因为您试图将null
强制转换为int
。关键是要扭转逻辑,以免发生这种情况:
int stockSnickers = 5;
if (Session["StockSnickers"] != null)
{
stockSnickers = (int)Session["StockSnickers"];
}