2011-01-05 11 views
88

No teniendo mucha suerte, tengo la siguiente sentencia if/else en la maquinilla de afeitar, que funciona perfectamenteRazor Si la sintaxis/Else operador condicional

<small> 
    @if(deletedView){ 
    @:Deleted 
    } 
    else { 
    @:Created 
    } by 
</small> 

que estoy tratando de hacer algo como esto:

<small> 
    @(deletedView) ? @:Deleted : @:Created by 
</small> 

Pero eso falla miserablemente. ¿Cuál es la sintaxis correcta?

+3

http://stackoverflow.com/questions/4091831/how-to-use-ternary-operator-in-razor-specifically-on-html-attributes –

+0

u el hombre. gracias –

+0

mmhh, no puedo cerrar mi propia pregunta. –

Respuesta

169

Debe poner toda la expresión ternaria entre paréntesis. Por desgracia, eso significa que no puede utilizar "@", pero que podría ser algo como esto:

@(deletedView ? "Deleted" : "Created by") 

Actualmente Razor admite un subconjunto de C# expresiones sin usar @() y, por desgracia, los operadores ternarios no son parte de ese conjunto.

+0

@David Lively ya respondió gracias :) Al menos ahora puede "cerrar" la pregunta ... –

+3

+1 para 'Razor actualmente admite un subconjunto de expresiones C# sin usar @()' se preguntaba por qué @if (condición) { me estaba dando un error – Tom

+0

@Andrew Nurse, como mencionaste, "Razor actualmente admite un subconjunto de expresiones C# sin usar @() y, lamentablemente, los operadores ternarios no son parte de ese conjunto". Me gustaría saber qué todos los operadores son parte de ese conjunto? ¡Gracias! – Vikram