将数据从控制器传递到视图没有响应.代码有问题吗?

本文关键字:响应 代码 有问题 视图 数据 控制器 | 更新日期: 2023-09-27 18:34:28

我正在编码的网站工作正常,除了从购物车中删除选项。我在代码中没有收到任何错误,但是当我单击从购物车中删除的链接时,代码什么也没做。似乎页面只是刷新。我正在用C#.net MVC 4编写系统。请有人帮我。

这是购物车控制器的一部分.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);
}

这是购物车模型的一部分。

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;
}

最后,这是购物车/索引视图。

@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>
}

将数据从控制器传递到视图没有响应.代码有问题吗?

除非您在

某个地方有一些 javascript 来处理"从购物车中删除"链接的onclick或向其添加href,否则您当前的href "#"将"似乎刷新页面"与您描述的完全一样。 请考虑将该锚标记更改为类似于"详细信息"链接的ActionLink,但这指向RemoveFromCart操作方法。

您需要

使用Html.ActionLink而不是a标签,就像您对商店/详细信息操作所做的那样。 示例(假设您的RemoveFromCart操作处于ShopController中,并且您想要删除 id = 项目的项目。专辑编号(:

@Html.ActionLink(
     "Remove from cart", 
     "RemoveFromCart", 
     "Shop", 
     new { id = item.AlbumId }, 
     new { @class = "RemoveFromCart"})

这样,将执行整页刷新,您需要从操作中返回 View。要仅进行部分刷新,您需要使用Ajax.ActionLink帮助程序。