我是新来的,请不要对我太苛刻了.
我创建了Cart
,并try 更新视图中的项目数量,同时删除项目.但都没什么用.请帮帮我,伙计们.
以下是我的视图模型、服务、控制器和视图:
public class CartItemViewModel
{
public int Id { get; set; }
public int ProductId { get; set; }
public string ProductName { get; set; } = string.Empty;
public string ProductImageUrl { get; set; } = string.Empty;
[Required(ErrorMessage = RequireErrorMessage)]
[Range(OrderItemQuantityMinValue,OrderItemQuantityMaxValue,
ErrorMessage = QuantityErrorMessage)]
public int Quantity { get; set; }
public decimal ProductPrice { get; set; }
public decimal TotalPrice { get; set; }
public int CartId { get; set; }
}
public class CartViewModel
{
public int Id { get; set; }
public string UserId { get; set; } = null!;
public decimal GrandTotal { get; set; }
public IEnumerable<CartItemViewModel> CartItems { get; set; } = new List<CartItemViewModel>();
}
public async Task<bool> RemoveCartItemFromCartAsync(int cartItemId)
{
var cartItem = await context.CartsItems.FindAsync(cartItemId);
if (cartItem != null)
{
context.CartsItems.Remove(cartItem);
await context.SaveChangesAsync();
return true;
}
return false;
}
public async Task<bool> UpdateCartItemQuantityAsync(int cartItemId, int newQuantity)
{
var cartItem = await context.CartsItems.FindAsync(cartItemId);
if (cartItem != null)
{
cartItem.Quantity = newQuantity;
await context.SaveChangesAsync();
return true;
}
return false;
}
[HttpPost]
public async Task<IActionResult> RemoveFromCart(int cartItemId)
{
try
{
var result = await cartService.RemoveCartItemFromCartAsync(cartItemId);
if (!result)
{
return NotFound();
}
return RedirectToAction(nameof(Cart));
}
catch (Exception)
{
return BadRequest();
}
}
[HttpPost]
public async Task<IActionResult> UpdateCartItemQuantity(int cartItemId, int newQuantity)
{
if (newQuantity <= 0)
{
return BadRequest("Invalid quantity.");
}
try
{
var result = await cartService.UpdateCartItemQuantityAsync(cartItemId, newQuantity);
if (!result)
{
return NotFound();
}
return RedirectToAction(nameof(Cart));
}
catch (Exception )
{
return BadRequest();
}
}
@model CartViewModel
<div class="row">
<div class="col-12">
<h1>Your Cart</h1>
@if (Model.CartItems.Any())
{
<table class="table table-bordered">
<thead>
<tr>
<th>Image</th>
<th>Name</th>
<th>Quantity</th>
<th>Price</th>
<th>Total</th>
<th>Action</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.CartItems)
{
<tr>
<td>
<img src="@item.ProductImageUrl" alt="Product Image" width="100px" height="100px" />
</td>
<td>@item.ProductName</td>
<td>
<form asp-controller="Cart" asp-action="UpdateCartItemQuantity" method="post">
<input type="hidden" name="cartItemId" value="@item.Id" />
<input type="number" name="newQuantity" value="@item.Quantity" min="1" />
<button type="submit">Update</button>
</form>
</td>
<td>$@item.ProductPrice</td>
<td>$@item.TotalPrice</td>
<td>
<form asp-controller="Cart" asp-action="RemoveFromCart" method="post">
<input type="hidden" name="cartItemId" value="@item.Id" />
<button type="submit">Remove</button>
</form>
</td>
</tr>
}
</tbody>
</table>
<div class="text-right">
<h3>Total Amount</h3>
<h3>Grand Total: $@Model.GrandTotal</h3>
<a asp-action="Checkout" asp-controller="Order" class="btn btn-info">Proceed To Checkout</a>
</div>
}
else
{
<p>Your cart is empty.</p>
}
</div>
</div>
我只想让这件事正常工作,然后继续下订单