asp.net mvc razor将两个项目相乘并转换为字符串

时间:2010-12-08 11:18:26

标签: asp.net-mvc razor

当我写@(line.Quantity * line.Product.Price).ToString("c")时,结果是

39,00.ToString("c") 

@line.Quantity * line.Product.Price.ToString("c")结果是

2 * line.Product.Price.ToString("c") 

如何在剃刀视图中将两个值相乘并将其转换为字符串?

2 个答案:

答案 0 :(得分:41)

@((line.Quantity * line.Product.Price).ToString("c"))

问题是剃刀不知道输出字符串何时结束,因为@用于在HTML中显示代码。 Spaces将剃刀切换回HTML模式。

将所有内容包装到括号中会使razor评估整个代码块。

虽然最合适的方法是在模型中引入新属性:

public class MyModel
{
   public double Total { get { return Quantity * Product.Price; }}
   //all other code here
}

并简单地使用:

@line.Total.ToString("c")

答案 1 :(得分:0)

这是一个老问题,但我刚刚遇到了同样的问题,这里是解决方案。

如果需要对razor view进行计算,可以通过以下方式进行:

如果您在 c# 块之外(例如 @foreach 或 @if ): 您可以将计算包装到 @{ } 中,它们将不会被呈现。

<p>Some text</p>
@{ var x = Model.Y * Model.Z; }
<p>X equals @x.ToString()</p>

如果您在 c# 块中: 您可以简单地将计算放在 { } 中。

<p>Some text</p>
@foreach (var x in Model.Y)
{
    { var z = x * 2; }
    <p>Z equals @z.ToString()</p>
}