我正在构建一个与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");}
每当我运行程序时,我得到的Object引用未设置为对象错误的实例,与@foreach (var item in Model.CartItems)
有关,即使我直接从购物车索引页的代码中复制,我仍然得到这个错误。除非我点击AddToCart,否则不会显示购物车。
请告知
答案 0 :(得分: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");}
感谢所有人的贡献!