我有购物车,我正在尝试为名为CartIndexViewModel
的视图中的项目计算总费用,以显示在名为"已完成"的视图上。当我使用视图包时,它不会显示出来。以下是计算总价格的CartIndexViewModel
的一部分。
@model MovieModels.ModelClasses.CartIndexViewModel
@{
ViewBag.Title = "Movie Store: Your Cart";
ViewBag.Cost = Model.Cart.ComputeTotalValue().ToString("R0.00");
}
现在我要移动总费用,或者在此视图上调用方法Cart.ComputeTotalValue()
@{
ViewBag.Title = "MovieStore: Order Submitted";
}
<h2>Thanks!</h2>
Thanks for placing your order. We'll ship your goods as soon as possible.
<h3>Payment is as as follows:</h3>
<div class="form-group">
<label>Total Price:</label> ViewBag.Cost = Model.Cart.ComputeTotalValue().ToString("R0.00");
</div>
答案 0 :(得分:0)
就像安德鲁巴伯所说的那样,你甚至都没有尝试显示总成本。否则Total Cost: <span>@ViewBag.Cost</span>
之类的内容应该在代码中的某处显示。
我的猜测是,要进入“已提交订单”页面,在提交订单(可能是通过点击购物车某处的按钮)和显示“已提交订单”之间的某个地方就会涉及到POST。确认页面。
由于HTTP有点无状态且ViewBag不在请求之间携带状态,因此在ShowCart请求中设置Cost属性对您没有任何好处:它将不会在下一个请求中出现(POST会使您进入订单提交页面。)
购物车虽然可能存放在某个地方(一个cookie,数据库或其他),但它被转换为一个订单(我再次假设它存储在数据库中)。
因此,在创建订单后,您现在应该有可用的总费用,因为要做到这一点,您可以访问某处的购物车及其中的项目;或者至少你有一个购物车的参考(例如Cart.Id),您可以使用它来提取实际数据并显示成本