2010-12-08 16 views
11

Cuando escribo @(line.Quantity * line.Product.Price).ToString("c") el resultado esasp.net mvc afeitar multiplicar dos punto y convertir a cadena

39,00.ToString("c") 

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

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

Cómo puedo multiplicar dos valores y convertirlo en cadena en una vista de afeitar?

Respuesta

36

tratar

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

El problema es que la maquinilla de afeitar no se sabe cuándo termina la cadena de salida desde @ se utiliza para mostrar el código en HTML. Spaces cambia la afeitadora de nuevo al modo HTML.

Envolver todo en paréntesis hace que la cuchilla evalúe todo el bloque de códigos.

Aunque la forma más adecuada sería la introducción de una nueva propiedad en su modelo:

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

y simplemente usar:

@line.Total.ToString("c") 
+0

estoy de acuerdo, sin duda no es bueno para ser perfoming cálculos lógicos en el presentación –