2012-09-12 11 views
7

Nel mio controller, che ho e in linea if:Inline Se in Razor Guarda

ViewBag.NameSortParam = If(String.IsNullOrEmpty(sortOrder), "Name desc", "") 

A mio avviso, non riesco a usare inline se:

@Code 
    If(True, true, true) 
End code 

si dice, "Se deve terminare con l'abbinamento End If." Perché non posso usare un inline se qui? Grazie.

+0

sì, questo è stato frustrante. Sono contento che tu abbia fatto questa domanda! – CokoBWare

risposta

10

Prova

@Code 
    @(If(True, true, true)) 
End Code 
+1

Sembra la risposta. Mi chiedo perché ha bisogno della parentesi? Grazie per questo. – user1477388

+1

Probabilmente solo una soluzione per farlo funzionare. In alternativa, usare 'IIf (true," "," ")' –

+1

IIF è obsoleto, per quanto ne so http://stackoverflow.com/questions/28377/iif-vs-if – user1477388

0

si potrebbe usare IIf, non è necessario ingombrare il codice con @Code sezioni:

@IIf(String.IsNullOrEmpty(sortOrder), "Name desc", "") 
+0

Grazie, ma credo che IIF sia obsoleto. Vedi http://stackoverflow.com/questions/28377/iif-vs-if – user1477388

9

si potrebbe usare qualcosa di simile:

@(true? "yes": "no") 
+2

Dubito che potresti usare qualcosa di simile in VB.NET. –

+1

Non ho notato il tag VB.NET, quindi potrebbe funzionare solo in C#. –

+0

Risolto il problema per essere VB.net quindi –

3

Puoi fare un inline se in vb.net piace questo:

@(If(testExpression, TruePart, FalsePart)) 
+0

Questo è l'unico che ha funzionato per me. Grazie. – camainc