对模型成员执行操作

时间:2015-10-05 15:21:37

标签: asp.net-mvc razor

我有一个使用模型的视图。我只需要使用razor对模型变量进行简单的减法。

代码如下所示:

    @model Inquiry.Inq_Weights


<table id="mainWeights">

        <tr>
            <td>@Html.DisplayFor(model => Model.HotScaleHalfId)</td>
            <td>@Html.DisplayFor(model => Model.HotScaleGrossWeight)</td>
            <td>@Html.DisplayFor(model => Model.HotScaleTareWeight)</td>
        </tr>
    <tr>
        <td><strong>Total Hot Scale Weight</strong></td>
    </tr>
    <tr>
    <td align="right">(@Model.HotScaleGrossWeight - @Model.HotScaleTareWeight;)</td>
    </tr>
</table>

我正在尝试(@Model.HotScaleGrossWeight - @Model.HotScaleTareWeight;) 但它只是显示“0 - 0”。此时零点是正确的。但我不希望它显示表达式,只是该操作的结果。 我还尝试使用变量然后列出,如

        @{
        var netWeight = @Model.HotScaleGrossWeight - @Model.HotScaleTareWeight;
        netWeight;
    }

但这也不起作用。如何对模型成员进行简单的数学运算?

1 个答案:

答案 0 :(得分:2)

你应该这样做:

  @(Model.HotScaleGrossWeight - Model.HotScaleTareWeight)

用你的另一个例子:

@{
    var netWeight = Model.HotScaleGrossWeight - Model.HotScaleTareWeight;
 }

然后将其与@netWeight一起使用。请注意,@符号是特定于剃刀的,您不能在c#表达式中为变量添加前缀。当你写@时,你实际上在说你打算写一个c#表达式。在@之前写Model只是为了让剃刀引擎知道这将是ac#expression(实际上是你的变量)而不是简单的文本&#39; Model&#39;。

但我建议在你的控制器中做这种事情。

更新

正如阿列克谢在评论@中写道的那样

不只是剃刀:What does the @ symbol before a variable name mean in C#?