ASP.NET Razor视图内实现两模型字段求和(无需控制器处理)
Razor视图层无侵入求和实现方案
直接在视图内用Razor代码块声明临时局部变量完成计算即可,整个计算过程只读取模型原始值,不会修改控制器传入的模型数据,也不会对数据库存储的值造成任何改动,不需要在控制器层写任何逻辑。
可直接运行的代码示例
<div class="cuartaParte"> <table style="width: 100%"> @* 视图层局部变量,仅渲染当前视图时生效,不会污染原始模型 *@ @{ decimal totalDiscountAmount = 0; } @foreach (var item in Model.PresupuestoDetalle) { // 循环内累加金额,仅操作局部变量 totalDiscountAmount += Model.ImporteDescuento; <tr> <th scope="row" style="width: 70%; text-align: right"> @* 单行直接计算两个折扣属性的和并输出,不修改原始属性值 *@ Descuento @(Model.Cliente.Descuento + Model.DescuentoExtraPorcen)% </th> <td>$@Model.ImporteDescuento</td> </tr> } @* 循环外输出累计总和,按需添加即可 *@ <tr> <th scope="row" style="width: 70%; text-align: right">折扣金额总计</th> <td>$@totalDiscountAmount</td> </tr> </table> </div>
关键注意点
- 两个属性的单次求和直接用
@(计算表达式)包裹即可,Razor会自动渲染计算结果,不要把+=这类赋值运算符直接写在HTML输出位置,会触发语法错误 - 循环累计的变量必须在循环外的Razor代码块
@{}中声明,不要在循环内部重复声明,否则会被重置无法累计 - 全程不要给
Model.xxx这类从数据库映射的属性直接赋值,所有计算结果存在视图局部变量里,就完全不会改动原始数据
内容的提问来源于stack exchange,提问作者Kike gonzalez
相关产品推荐
相关产品推荐

