c# - 如何在 asp.net core 中使用删除 Json 对象
问题描述
我正在尝试在会话中删除序列化为 Json 对象的产品列表,但我不知道如何去做。基本上,一旦用户按下取消订单按钮,我希望能够删除产品列表。
这是我最初分别设置和序列化会话字符串和 Json 对象的位置和方式
public IActionResult OrderProduct(){
ProductViewModel productViewModel = new ProductViewModel();
return View(productViewModel);
}
[HTTPPost]
public IActionResult OrderProduct(ProductViewModel productViewModel){
Product product = new Product();
product.Id = productViewModel.Id;
List<Product> products = new List<Product>();
products.Add(product);
HttpContext.Session.SetString("SessionProducts", JsonConvert.SerializeObject(products));
returnToRedirect("ConfirmOrder");
}
[HTTPPost]
public IActionResult ConfirmOrder(){
var products= JsonConvert.DeserializeObject<List<Product>>(HttpContext.Session.GetString("SessionProducts"));
foreach(var product in products){
_productRepo.CreateOrder(product) //stores product in the database
}
return RedirectToAction("OrderSummary");
}
一旦用户单击取消订单按钮,我将他们重定向到下面的这个 HTTPGET Action 方法。在这里,我希望能够删除会话和 Json 对象,以便用户可以重新开始创建新的产品订单
public IActionResult UserMenu(){
if (HttpContext.Session.GetString("SessionProducts") != null){
/*
dynamic products= JsonConvert.DeserializeObject<List<Product>>(HttpContext.Session.GetString("SessionProducts"));
JObject jObject = JObject.Parse(products);
jObject.RemoveAll();
*/
HttpContext.Session.Remove("SessionProducts");
}
return View();
}
问题是它HttpContext.Session.Remove("SessionProducts")
没有做我认为它会做的事情(即删除会话)。我知道这一点是因为当我尝试将产品列表保留在我的数据库中时,它会保留应该删除的产品和新添加的产品。我现在知道我HttpContext.Session.Remove("SessionProducts")
不一定要删除会话,而是删除密钥字符串。但是,问题不是我如何删除会话和 json 对象?我如何以正确的方式完成这项工作?
解决方案
推荐阅读
- mongodb - 在 MongoDB 操作中使用变量的值
- android-studio - 从 Android Studio 启动的模拟器上的这些圆圈是什么?
- azure-devops - 检查/了解 Azure Devops 中的构建是由手动还是 CI 触发的最佳方法
- xamarin - 如何从 Xamarin Forms UWP 中删除/替换选择器下拉图标?
- java - 通过覆盖spring实现一种返回标头的方法
- arrays - 尝试从 2 个数组中找到最小的数组元素会返回 0(不起作用),而其他的则有效。(C 语言)
- python - 压缩方法并将数据放入一个热编码矩阵
- python - Python 3.7 和 3.8 之间 Python thread.join() 的区别
- javascript - 使用 js 和 html 进行简单的数学计算
- c++ - 如何在 C++14 中将多字节值写入共享内存?