将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'>")