2011-12-07 9 views
18

¿Puedo acortar esto a una línea? He intentado de varias maneras, pero no puedo hacerlo bien.Acorte esta instrucción if en Razor a una línea

@if(SiteMap.CurrentNode.Title == "Contact") 
{ 
    @:<div class="contact"> 
} 
+1

Probablemente hay una mejor manera de hacerlo sin etiquetas desequilibradas. Por favor, muestre más código. – SLaks

+0

Esta es la declaración if que quiero abreviar. Otro código es irrelevante. – Todd

+0

Incorrecto. Esta declaración 'if' es un diseño pobre. Dado otro código, podemos mostrar cómo diseñarlo mejor. – SLaks

Respuesta

20

Puede haber una solución aún más simple, pero esto debería funcionar:

@Html.Raw((SiteMap.CurrentNode.Title == "Contact") ? "<div class='contact'>" : "") 
+1

¡Tenga cuidado con Html.Raw, no codifica la salida! –

11

Otra manera sería:

@if(SiteMap.CurrentNode.Title == "Contact") { <text><div class="contact"></text> } 

Personalmente me parece más legible que el operador ternario, pero esto es personal

+0

Me gusta la legibilidad de este también pero el único problema es que cuando presionas CTRL K + D en Visual Studio, lo baja a 3 líneas :( –

5

La forma más corta de hacerlo es como:

@(SiteMap.CurrentNode.Title == "Contact" ? "<div class='contact'>" : "") 

o

@(SiteMap.CurrentNode.Title == "Contact" ? @"<div class=""contact"">" : "") 

o incluso más corto si no repita su código html

<div class="@(SiteMap.CurrentNode.Title == "Contact" ? "contact" : "")"> 
Cuestiones relacionadas