将Razor中的if语句缩短为一行

Tod*_*odd 21 razor

我可以缩短到一行吗?我尝试了各种各样的方法,但不能完全正确.

@if(SiteMap.CurrentNode.Title == "Contact")
{
    @:<div class="contact">
}
Run Code Online (Sandbox Code Playgroud)

xbr*_*ady 23

可能有一个更简单的解决方案,但这应该工作:

@Html.Raw((SiteMap.CurrentNode.Title == "Contact") ? "<div class='contact'>" : "")
Run Code Online (Sandbox Code Playgroud)

  • 小心 Html.Raw,不对输出进行编码! (2认同)

Ale*_*lex 13

另一种方式是:

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

我个人认为它比三元运算符更具可读性,但这是个人的

  • 我也喜欢这个的可读性,但唯一的问题是当你在 Visual Studio 中按下 CTRL K+D 时,它会下降到 3 行 :( (2认同)

Has*_*anG 12

最简单的方法是:

@(SiteMap.CurrentNode.Title == "Contact" ? "<div class='contact'>" : "")
Run Code Online (Sandbox Code Playgroud)

要么

@(SiteMap.CurrentNode.Title == "Contact" ? @"<div class=""contact"">" : "")
Run Code Online (Sandbox Code Playgroud)

如果你不重复你的HTML代码,甚至更短

<div class="@(SiteMap.CurrentNode.Title == "Contact" ? "contact" : "")">
Run Code Online (Sandbox Code Playgroud)