0

我正在构建一个与 MVCMusicStore 非常相似的 mvc Web 应用程序。我想在屏幕右上角的一个小列表中显示我的购物车项目,以便用户可以在任何给定时间看到购物车中的内容。我的部分观点是:

@model ProOptInteractive.ViewModels.ShoppingCartViewModel
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu">
    @foreach (var item in Model.CartItems)
    {

  <li><a tabindex="-1" href="#">@item @item.Count</a></li>
    }
    <li class="divider"></li>
    <li><a tabindex="-1" href="#"></a></li>
</ul>

_Layout.cshtml 文件中的部分视图是

@{Html.RenderAction("CartSize", "ShoppingCart");}

每当我运行程序时,我都会得到一个未设置为对象错误实例的对象引用,这与@foreach (var item in Model.CartItems)并且即使我直接从购物车索引页面的代码中复制出来,我仍然会收到此错误。除非我单击 AddToCart,否则不会出现购物车。

请指教

4

1 回答 1

1

我设法通过在我的 ShoppingCartControlled 中添加一个与 Index 方法几乎相同的方法来修复它,称为 CartSummary 并返回一个 PartialView:

public ActionResult CartSummary()
    {
        var cart = ShoppingCart.GetCart(this.HttpContext);

        // Set up our ViewModel
        var viewModel = new ShoppingCartViewModel
        {
            CartItems = cart.GetCartItems(),
            CartTotal = cart.GetTotal()
        };
        // Return the view
        return PartialView(viewModel);
    }

这是唯一似乎“包含”任何购物车项目的方法。我通过引用它@{Html.RenderAction("CartSummary", "ShoppingCart");}

感谢大家的贡献!

于 2013-04-16T14:42:37.790 回答