如何对来自不同Model的ViewBag数值进行求和计算
解决ViewBag数值求和的问题
你之前的代码问题在于,只是把两个相同的ViewBag值和+符号直接输出成字符串了,并没有真正执行数值相加的计算。这里提供两种可行的解决方式:
方式一:在视图中直接计算并格式化
把三个ViewBag值转换为decimal后相加,再统一格式化为货币格式,代码如下:
<p>@(((decimal)ViewBag.InvHardwareTotalPrice + (decimal)ViewBag.InvSoftwareTotalPrice + (decimal)ViewBag.InvFurnitureTotalPrice).ToString("C2"))</p>
如果担心某个ViewBag值可能未赋值(为null),可以加上空值处理避免转换报错:
<p>@(((decimal)(ViewBag.InvHardwareTotalPrice ?? 0) + (decimal)(ViewBag.InvSoftwareTotalPrice ?? 0) + (decimal)(ViewBag.InvFurnitureTotalPrice ?? 0)).ToString("C2"))</p>
方式二:在控制器中预先计算总和(推荐)
视图尽量只负责展示,业务计算放在控制器中更合理。在控制器里先计算好总和,再通过ViewBag传递到视图:
控制器代码:
// 假设你已经有三个类别的总价计算逻辑 decimal hardwareTotal = 你的硬件总价计算逻辑; decimal softwareTotal = 你的软件总价计算逻辑; decimal furnitureTotal = 你的家具总价计算逻辑; ViewBag.InvHardwareTotalPrice = hardwareTotal; ViewBag.InvSoftwareTotalPrice = softwareTotal; ViewBag.InvFurnitureTotalPrice = furnitureTotal; // 计算总和并传递 ViewBag.InvTotalPrice = hardwareTotal + softwareTotal + furnitureTotal;
视图代码:
<p>@(((decimal)ViewBag.InvTotalPrice).ToString("C2"))</p>
内容的提问来源于stack exchange,提问作者Acadia
相关产品推荐
相关产品推荐

