我编码的网站工作正常,除了从购物车中删除选项。我没有在代码中收到任何错误,但当我点击链接从购物车中删除时,代码什么都不做。似乎页面只是刷新。我正在使用C#.net MVC 4编写系统。请有人帮助我。
这是ShoppingCartController.cs
的一部分[HttpPost]
public ActionResult RemoveFromCart(int id)
{
// Remove the item from the cart
var cart = ShoppingCart.GetCart(this.HttpContext);
// Get the name of the album to display confirmation
string albumName = storeDB.Carts
.Single(item => item.RecordId == id).Album.Title;
// Remove from cart
int itemCount = cart.RemoveFromCart(id);
// Display the confirmation message
var results = new ShoppingCartRemoveViewModel
{
Message = Server.HtmlEncode(albumName) +
" has been removed from your shopping cart.",
CartTotal = cart.GetTotal(),
CartCount = cart.GetCount(),
ItemCount = itemCount,
DeleteId = id
};
return Json(results);
}
这是ShoppingCart模型的一部分。
public int RemoveFromCart(int id)
{
// Get the cart
var cartItem = storeDB.Carts.Single(
cart => cart.CartId == ShoppingCartId
&& cart.RecordId == id);
int itemCount = 0;
if (cartItem != null)
{
if (cartItem.Count > 1)
{
cartItem.Count--;
itemCount = cartItem.Count;
}
else
{
storeDB.Carts.Remove(cartItem);
}
// Save changes
storeDB.SaveChanges();
}
return itemCount;
}
最后这是ShoppingCart / Index视图。
@foreach (var item in Model.CartItems)
{
<tr id="row-@item.RecordId">
<td>
@Html.ActionLink(item.Album.Title, "Details", "Shop", new { id = item.AlbumId }, null)
</td>
<td>
@item.Album.Price
</td>
<td id="item-count-@item.RecordId">
@item.Count
</td>
<td>
<a href="#" class="RemoveFromCart" data-id="(@item.RecordId == id).Album.Title">Remove from cart</a>
</td>
</tr>
}
答案 0 :(得分:0)
除非您在处理“从购物车中移除”链接的onclick
或向其添加href
的某个地方使用了某些javascript,否则您当前的href
{{1}将“完全按照你所描述的那样刷新页面”。请考虑将该锚标记更改为"#"
,例如您的详细信息链接,但指向ActionLink
操作方法。
答案 1 :(得分:0)
您需要使用Html.ActionLink
代替a
代码,就像您对商店/详细信息操作一样。示例(假设您的RemoveFromCart
操作位于ShopController
,并且您要删除ID = item.AlbumId的项目):
@Html.ActionLink(
"Remove from cart",
"RemoveFromCart",
"Shop",
new { id = item.AlbumId },
new { @class = "RemoveFromCart"})
这样就会执行整页刷新,您需要从操作中返回View。要仅进行部分刷新,您需要使用Ajax.ActionLink
帮助程序。