2011-12-07 9 views
18

Czy mogę ją skrócić do jednej linii? Próbowałem różnych sposobów, ale nie mogę tego naprawić.Skróć tę instrukcję if w Razor do jednej linii

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

Nie ma chyba lepszego sposobu, aby to zrobić bez niezrównoważonych tagów. Pokaż więcej kodu. – SLaks

+0

To zdanie, które chcę skrócić. Inny kod jest nieistotny. – Todd

+0

Niepoprawnie. To stwierdzenie "jeśli" jest kiepskim projektem. Biorąc pod uwagę inny kod, możemy pokazać, jak zaprojektować go lepiej. – SLaks

Odpowiedz

20

Nie może być jeszcze prostsze rozwiązanie, ale to powinno działać:

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

Uważaj przy pomocy Html.Raw, nie koduje wyjścia! –

11

Innym sposobem byłoby:

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

Ja osobiście uważam, że bardziej czytelny niż operatora potrójnego, ale to jest osobiste

+0

Podoba mi się czytelność tego również, ale jedynym problemem jest to, że po naciśnięciu CTRL K + D w Visual Studio spada do 3 linii :( –

5

Najkrótszym możliwym sposobem jest:

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

lub

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

lub nawet krócej, jeśli nie powtórzyć swój kod HTML

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