当我写@(line.Quantity * line.Product.Price).ToString("c")
时,结果是
39,00.ToString("c")
和@line.Quantity * line.Product.Price.ToString("c")
结果是
2 * line.Product.Price.ToString("c")
如何在剃刀视图中将两个值相乘并将其转换为字符串?
答案 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>
}