【发布时间】:2021-07-28 11:46:44
【问题描述】:
我目前正在处理一个处理超过 1000 条记录的网站。每条记录都需要一个输入字段,用户可以在其中填写他想要的产品数量。 我尝试过四处搜索,但大多数“答案”都与 PHP 相关,或者不适用于我,因为它们对输入具有唯一的 ID。
@foreach(var listItem in Model)
{
<tr>
<td>@listItem.Name</td>
<td>@listItem.Brand</td>
<td>@listItem.Weight</td>
<td>@listItem.Country</td>
<td>@listItem.Price</td>
<td>
<form method="post" asp-action="AddToCart">
<input type="hidden" name="ColumnNr" value="@listitem.ColumnNr" />
<input type="hidden" name="ColumnFollowUpNr" value="@listitem.ColumnFollowUpNr" />
<input type="hidden" name="sortingItem" value="@listitem.MainCategory" />
<input id="myInput" type="number" name="Amount" value="" onchange="this.form.submit();"/>
</form>
</td>
</tr>
}
我的 AddToCart 方法将 ColumnNr、ColumnFollowUpNr 和金额放入可以在网站上的任何位置获取的 Session Cookie 中。我在另一个控制器中使用这些来为购物车中的商品创建列表。
public IActionResult AddToCart(short ColumnNr, short ColumnFollowUpNr, string sortingItem, int Amount)
{
var LoggedUser = Convert.ToInt32(User.Identity.Name);
var amount = Amount;
List<OrderItem> cart = new List<OrderItem>();
string cartString = HttpContext.Session.GetString("Jager.Items");
if (cartString != null)
{
//if cart exists --> deserialize. if OrderItem exists --> edit Amount. Else create new OrderItem
cart = JsonConvert.DeserializeObject<List<OrderItem>>(cartString);
var result = cart.FirstOrDefault(x => x.ColumnNr == ColumnNr && x.ColumnFollowUpNr == ColumnFollowUpNr );
if (result != null)
{
//only edits the amount if the OrderItem already exists
result.Amount = Amount;
}
else {
OrderItem order = new OrderItem
{
Id = ColumnNr + ColumnFollowUpNr ,
CurrentUser = LoggedUser,
Amount = Amount,
ColumnNr = ColumnNr,
ColumnFollowUpNr = ColumnFollowUpNr
};
cart.Add(order);
}
}
else {
OrderItem order = new OrderItem
{
Id = ColumnNr + ColumnFollowUpNr ,
CurrentUser = LoggedUser,
Amount = Amount,
ColumnNr = ColumnNr ,
ColumnFollowUpNr = ColumnFollowUpNr
};
cart.Add(order);
}
cartString = JsonConvert.SerializeObject(cart);
HttpContext.Session.SetString("Jager.Items", cartString);
return RedirectToAction("Index", new { item = sortingItem.Trim() });
}
现在的问题是:我想记住用户输入并在激活方法/刷新网站时。它需要记住该特定列上的输入。我想我需要使用 JavaScript 或 JQuery 才能从 Cookie(名为 Jager.Items)中获取 Amount 并将其放回指定的列,但我不知道该怎么做,因为没有我的输入有一个唯一的 ID。
任何帮助都非常受欢迎,因为我对 JQuery 非常陌生,并且对 JavaScript 几乎没有经验。
【问题讨论】:
标签: javascript jquery asp.net-mvc asp.net-core