这里使用TempData["Amount"]
将购物车总金额从一个控制器动作传递到另一种动作方法。因此,我怀疑使用TempData["Amount"]
将敏感信息从一种操作方法传递到另一种操作方法是否是一种好的做法。时间数据的生命周期是多少(例如sessions
20分钟),以及如何处理TempData["Amount"]
的异常。
if (adoptionDetails != null)
{
foreach (var m in adoptionDetails.animalAdaptionDetails.ToList())
{
amount += Convert.ToInt32(m.amount);
animalNames += m.name;
animalNames += ",";
}
ViewBag.Amount = amount;
ViewBag.animalsName = animalNames;
TempData["Amount"] = amount;
return View(adoptionDetails);
}
else
{
return View("~/Views/Users/Errorpage.cshtml");
}
答案 0 :(得分:0)
TempData通过将会话与用户绑定的相同逻辑与用户绑定。
TempData仅可用于同一会话发送的下一个请求,之后自动删除。
TempData保留在服务器内存中,只有将其插入到响应中后,它才会传输到客户端。
答案 1 :(得分:0)
您可以用另一种方式来考虑它。
您有一些用户数据,无论它是什么,都需要在多个位置将其提供给您的应用程序。一种选择是会话,它是受用户限制的,它是短暂的并且可以很好地工作,前提是您不必在其中存储太多。
一旦将数据放在一个位置,就不再需要考虑在控制器之间传递数据,而是开始将其拉到任何需要的地方。您可以开始构建一些可用于存储的服务。我说过会话,但是您也可以轻松使用其他东西,例如实际的数据库,对于购物车来说,这不是一个坏主意。
这里的想法是停止从MVC的角度思考,开始在应用程序级别进行思考。