0

私がコーディングしている Web サイトは、カートから削除するオプションを除いて正常に動作しています。コードにエラーは発生しませんが、カートから削除するためのリンクをクリックすると、コードは何もしません。ページが更新されるだけのようです。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>
}
4

2 に答える 2

0

Shop/Details アクションの場合と同様に、タグ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部分的な更新のみを行うには、ヘルパーを使用する必要があります。

于 2013-10-09T09:57:28.277 に答える