我的控制器功能和变量“钱”
static int? money = 500;
public ActionResult SubmitPurchase(int? orderPrice)
{
money = money - orderPrice;
ViewBag.Money = money;
if (db.Purchases.Any())
{
db.Database.ExecuteSqlCommand("delete from PurchaseLists");
return View();
}
else return RedirectToAction("Order");
}
我的观点
<div align="center">
<p><h1>Thank you!</h1></p>
<p><h2>Your balance is @ViewBag.Money</h2></p>
<p><h2>Come again plz! :)</h2></p>
</div>
<a href="/Home/Order">
<input type="button" value="main menu"/>
</a>
另一个视图通过功能orderPrice
中的网址值SubmitPurchase
发送。我的问题是我的视图中的@ViewBag.Money
没有显示,但在函数money
中计算后应显示变量SubmitPurchase
的值。我做错了什么?
答案 0 :(得分:2)
如果您没有将有效的整数值传递给orderPrice
参数,那么您的代码将尝试执行500-null
,这将导致null
,并且空值将存储在{{1}中变量并将设置为ViewBag。
在进行数学运算之前,您可以进行空检查以防止这种情况发生。
money
您尝试访问的网址是http://localhost:61314/Home/SubmitPurchase/49。使用默认的MVC路由注册,它不会映射到方法的if(orderPrice!=null)
money = money - orderPrice;
参数。您可以更新代码以生成类似
http://localhost:61314/Home/SubmitPurchase?orderPrice=49
或强>
将您的操作方法参数名称更新为orderPrice
id
假设您的SubmitPurchaseview( public ActionResult SubmitPurchase(int? id)
{
if(id!=null)
money = money - id;
// do something
return View();
}
)具有读取ViewBag项目并显示它的代码。
答案 1 :(得分:1)
试试这个例子:
if(orderPrice.HasValue)
{
money = money - orderPrice;
}
ViewBag.Money = money;
或者将您的action参数更改为不可为空。
public ActionResult SubmitPurchase(int orderPrice)