如何在另一个视图中创建另一个视图中使用的方法?

时间:2014-07-29 12:33:44

标签: c# asp.net-mvc viewbag

我有购物车,我正在尝试为名为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>

1 个答案:

答案 0 :(得分:0)

就像安德鲁巴伯所说的那样,你甚至都没有尝试显示总成本。否则Total Cost: <span>@ViewBag.Cost</span>之类的内容应该在代码中的某处显示。

我的猜测是,要进入“已提交订单”页面,在提交订单(可能是通过点击购物车某处的按钮)和显示“已提交订单”之间的某个地方就会涉及到POST。确认页面。

由于HTTP有点无状态且ViewBag不在请求之间携带状态,因此在ShowCart请求中设置Cost属性对您没有任何好处:它将不会在下一个请求中出现(POST会使您进入订单提交页面。)

购物车虽然可能存放在某个地方(一个cookie,数据库或其他),但它被转换为一个订单(我再次假设它存储在数据库中)。

因此,在创建订单后,您现在应该有可用的总费用,因为要做到这一点,您可以访问某处的购物车及其中的项目;或者至少你有一个购物车的参考(例如Cart.Id),您可以使用它来提取实际数据并显示成本