2011-12-07 58 views
18

我可以將此縮短爲一行嗎?我嘗試了各種方法,但不能完全正確。如果在剃刀中的語句縮短爲一行,則縮短此操作

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

有可能是一個更好的方式來做到這一點沒有不平衡的標記。請顯示更多代碼。 – SLaks

+0

這是我想縮短的if語句。其他代碼是不相關的。 – Todd

+0

錯了。這個if語句是糟糕的設計。給出其他代碼,我們可以展示如何更好地設計它。 – SLaks

回答

20

有可能是一個更簡單的解決方案,但是這應該工作:

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

小心使用Html.Raw,不會對輸出進行編碼! –

11

另一種方法是:

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

我個人覺得比三元運算符的可讀性,但這是個人的

+0

我也喜歡這一個的可讀性,但唯一的問題是,當你在Visual Studio中打CTRL K + D時,它會將它下降到3行:( –

5

最短的可能的方法是:

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

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

,甚至更短,如果你不重複的HTML代碼

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