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

将Razor中的if语句缩短为一行,razor,Razor,我能把这缩短成一行吗?我试过各种方法,但都做不好 @if(SiteMap.CurrentNode.Title == "Contact") { @:<div class="contact"> } @if(SiteMap.CurrentNode.Title==“联系人”) { @: } 可能有一个更简单的解决方案,但这应该是可行的: @Html.Raw((SiteMap.CurrentNode.Title == "Contact") ? "<div class='cont

我能把这缩短成一行吗?我试过各种方法,但都做不好

@if(SiteMap.CurrentNode.Title == "Contact")
{
    @:<div class="contact">
}
@if(SiteMap.CurrentNode.Title==“联系人”)
{
@:
}

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

@Html.Raw((SiteMap.CurrentNode.Title == "Contact") ? "<div class='contact'>" : "")
@Html.Raw((SiteMap.CurrentNode.Title==“联系人”)?:“”)
另一种方法是:

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

我个人觉得它比三元运算符更可读,但这是个人的

最短的方法是:

@(SiteMap.CurrentNode.Title == "Contact" ? "<div class='contact'>" : "")
@(SiteMap.CurrentNode.Title==“联系人”?:“”)

@(SiteMap.CurrentNode.Title==“联系人”?@:“”)
如果不重复html代码,甚至更短

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

这将起作用

剃刀语法

@(SiteMap.CurrentNode.Title == "Contact" ? "<div class='contact'>")
@(SiteMap.CurrentNode.Title==“联系人”?)

如果没有不平衡的标签,可能有更好的方法。请显示更多代码。这是我想要缩短的if语句。其他代码与此无关。错误。此
if
语句设计不佳。给定其他代码,我们可以展示如何更好地设计它。这就是为什么我在这里发布优化这个if语句的原因。我也喜欢这个语句的可读性,但唯一的问题是,当你在Visual Studio中点击CTRL K+D时,它会将它降到3行:(小心Html.Raw,不要对输出进行编码!这是我最好的方法,只是一个非常可读和常见的C#语法
@(SiteMap.CurrentNode.Title == "Contact" ? "<div class='contact'>")