2012-07-29 33 views
5

Estoy tratando de entender mejor el marco de mvc knockout. Estoy buscando en el sample of a shopping cart y tratando de averiguar:Cómo calcular el valor total del carrito de la muestra del carrito de mvc knockout

  1. cómo calcular el coste total
  2. dónde agregar las reglas de negocio del lado del cliente (tales como descuentos y bonos)

Para calcular el subtotal, el código dice

@using (lines.If(m => m.ProductId != -1)) 
{ 
    using (var product = lines.With(m => ko.Model.DataBase[m.CategoryId].Products[m.ProductId])) 
    { 
     @product.Html.Span(m => "\\$" + m.Price)     
    } 
} 

Cuando tr y para obtener el total a partir de allí, generalmente termino con una excepción de compilación o NullReferenceException en tiempo de ejecución. Por ejemplo

@using (lines.If(m => m.ProductId != -1)) 
{ 
    using (var product = lines.With(m => ko.Model.Categories[m.CategoryId].Products[m.ProductId])) 
    { 
     @product.Html.Span(m => "\\$" + (lines.Model.Quantity * m.Price))              
     @{double total = lines.Model.Quantity * m.Price;} 
    } 
} 

me da

compilador mensaje de error: CS1501: No hay sobrecarga para el método 'Escribir' tiene 0 argumentos

parece que estoy haciendo mal. ¿Alguien me señalaría en la dirección correcta?

+0

¿Qué línea apunta con este error? Además, ¿es este su primer intento de usar KO en general o solo el marco KO MVC? –

Respuesta

0

¿Ha intentado eliminar el símbolo @ desde el inicio de cada línea? Estoy seguro de que una vez que abras un bloque de código de afeitar, no es necesario que sigas prefiriendo cada línea con @. Además, no estoy seguro de por qué la línea 'doble total' está envuelta en {}?

@using (var product = lines.With(m => ko.Model.Categories[m.CategoryId].Products[m.ProductId])) 
{ 
    product.Html.Span(m => "\\$" + (lines.Model.Quantity * m.Price)); 
    double total = lines.Model.Quantity * m.Price; 
} 
Cuestiones relacionadas