gpt4 book ai didi

C# MVC 基于 session 的简单购物车

转载 作者:行者123 更新时间:2023-11-30 12:24:22 24 4
gpt4 key购买 nike

我正在尝试找出在 session 中存储产品的简单购物车。

索引 View :

<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.product1)
</th>
<th></th>
</tr>

@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.product1)
</td>
<td>
@Html.ActionLink("Add products to cart", "AddToBasket", new { id=item.id})
</td>
</tr>
}

</table>

每个产品旁边是 Controller 中 AddToBasket 方法的“添加到购物车”,该方法读取产品的 ID 并将其存储在 session ["basket"] 列表中:

public ActionResult AddToBasket(int? id)
{
if (Session["Basket"] == null)
{
Session["Basket"] = new List<int>();
}

((List<int>)Session["Basket"]).Add(id.Value);
ViewBag.List = Session["Basket"];


return RedirectToAction("Index");
}

现在我将产品的 ID 存储在 session 中,并希望从数据库中检索信息并将它们与 ID 匹配。这是我想不通的。我试图创建字典并用值填充它,但显然这不起作用:

public ActionResult ShowBasket()
{
List<int> lista = new List<int>((List<int>)Session["Basket"]);

Dictionary<int, string> productSet = new Dictionary<int, string>();

foreach (var product in lista)
{
productSet[product] = db.products.Find(product).ToString();
}

ViewBag.products = productSet;

return View(slownik);
}

也尝试过ADO.Net从数据库中检索数据但又失败了:

public ActionResult ShowBasket()
{
List<int> plist = new List<int>((List<int>)Session["Basket"]);

SqlConnection myConnection = new SqlConnection(my_connection_string);
SqlCommand myCommand;
SqlDataReader myReader;
string s;

myConnection.Open();
s = "select product from db.products where id=" + plist[0];
myCommand = new SqlCommand(s, myConnection);
myReader = myCommand.ExecuteReader();
if (myReader.Read())
{
string loaded_record = myReader.GetString("product1");
}

myConnection.Close();
return View();
}

有人可以帮忙吗?我只是初学者,经过几十个小时的寻找想法后,我决定寻求帮助,因为我无法做到...

非常感谢您的帮助!

最佳答案

您的问题具体是什么/哪里不是很清楚。但是在我看来,您永远不会将更新的项目列表分配回 session 。

在下面的代码中,我特别指出 session 应该更新到更新列表。

public ActionResult AddToBasket(int? id)
{
if (Session["Basket"] == null)
{
Session["Basket"] = new List<int>();
}

var items = (List<int>)Session["Basket"];
items.Add(id.Value);
Session["Basket"] = items;
ViewBag.List = Session["Basket"];

return RedirectToAction("Index");
}

您的代码还有其他问题,可以在Code Review 找到帮助。 , 请务必阅读 tour第一的。在 Stack Overflow,我们专门查看错误。

关于C# MVC 基于 session 的简单购物车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34284486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com