MVC 4 _Layout.cshtml viewmodel

时间:2013-04-10 21:28:51

标签: asp.net-mvc razor

我想在我的MVC网站的每个页面上显示所选项目的计数。我有一个ViewModel定义了我想要的属性

public class CartViewModel
{
    public List<CartItem> CartItems { get; set; }
    public decimal CartTotal { get; set; }
}

获取Cart的控制器,将其映射到视图模型并将其传递到

public ActionResult GetCartSummary()
{
    var cart = Cart.Instance;
    var viewModel = AutoMapper.Mapper.Map<Cart, CartViewModel>(cart);
    return View(viewModel);
}

以及该视图

@model TheWorkshop.Web.Models.Edit.ShoppingCartViewModel

<h2>Cart Summary</h2>
<span>@Model.CartTotal</span>

最后在我的_Layout.cshtml文件中

@Html.Action("GetCartSummary", "Cart")

但是这给了我

  

System.StackOverflowException未处理

2 个答案:

答案 0 :(得分:6)

尝试将以下内容添加到购物车视图中:

@{Layout = null;}

答案 1 :(得分:3)

尝试返回部分视图而不是视图:

public ActionResult GetCartSummary()
{
    var cart = Cart.Instance;
    var viewModel = AutoMapper.Mapper.Map<Cart, CartViewModel>(cart);
    return PartialView(viewModel);
}