2011-01-05 2 views
88

Non avendo molta fortuna, ho il seguente if/else in Razor che funziona perfettamenteRazor Se sintassi/Else operatore condizionale

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

che sto cercando di fare qualcosa di simile:

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

Ma questo fallisce miseramente. Qual è la sintassi corretta?

+3

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

+0

l'uomo. grazie –

+0

mmhh, non posso chiudere la mia domanda. –

risposta

169

È necessario inserire l'intera espressione ternaria tra parentesi. Purtroppo questo significa che non è possibile utilizzare "@", ma si poteva fare qualcosa di simile:

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

Razor attualmente supporta un sottoinsieme di C# espressioni senza utilizzare @() e, purtroppo, gli operatori ternari non fanno parte del quel set.

+0

@David Lively ha già risposto grazie :) Almeno può "chiudere" la domanda ora ... –

+3

+1 per "Razor attualmente supporta un sottoinsieme di espressioni C# senza usare @()" si chiedeva perché @if (condizione) { mi stava dando un errore – Tom

+0

@Andrew Nurse, Come già detto, "Razor supporta attualmente un sottoinsieme di espressioni C# senza usare @() e sfortunatamente gli operatori ternari non fanno parte di quel set". Mi piacerebbe sapere cosa fanno tutti gli operatori di quel set? Grazie! – Vikram