首页 > 解决方案 > 如果等价于剃刀中的三元表达式,如何写?

问题描述

目前,我在帖子之后使用了三元表达式:Razor If/Else 条件运算符语法它工作正常,但由于在我的情况下表达式值很长,我想以更清晰的方式编写它们,也许在途中使用临时变量。

我知道if这是一个语句,而不是表达式,但是怎么写呢?结果应该只是字符串(用于在页面上显示)。

所以从:

@(condition ? string1 : string2)

它的if对应物会是什么样子?

我也搜索并尝试编写ifs 和 lambda,但每次遇到一些语法错误。我想保留返回字符串值的这种简单性,而不是在每个放置值的分支中执行,例如@Html.DisplayFor.

更新

我的string价值观是纯文本,没有 html 标签,或者一些花哨的东西。实际代码只是(为此目的有点过于复杂,但我希望可读):

@(summary.Any() ? String.Join(", ", summary.Select(it => it.Key.ToString())) : "none")

标签: c#asp.net-corerazor

解决方案


我想你只需要几个换行符

@if (someBoolean == true)
{
    <div>
        Boolean is true
    </div>
}
else
{
    <div>
        Boolean is false
    </div>
}

或者,如果您想在生成的 html 中使用变量:

@if (someBoolean == true)
{
    <div>
        Boolean is: @someBoolean
    </div>
}
else
{
    <div>
        Boolean is: @someBoolean
    </div>
}

编辑

如果您只想在 if else 中有 c# 代码,我相信它应该如下所示:

@if (someBoolean == true)
{
    @{
     // Your if instructions here
     }
}
else
{
    @{
     // Your else instructions here
     }
}

推荐阅读