【问题标题】:Testing multiple conditions (Else if) when using the ternary operator in razor view在剃刀视图中使用三元运算符时测试多个条件(Else if)
【发布时间】:2016-07-21 18:45:49
【问题描述】:

我有一个 umbraco 页面的列表集合,我想循环检查 bool 属性是否为真,如果是,我想将特定类应用于 div

如何在 razor 中编写 else if 三元运算符以将类应用于 div。如果我没有使用三元,那么它看起来像这样

if package.GetPropertyValue<bool>("test")
{
  <div class="test1"></div>
}
else if (package.GetPropertyValue<bool>("test1"))
{
  <div class="test1"></div>
}
else if (package.GetPropertyValue<bool>("test2"))
{
  <div class="test2"></div>
}

在我看来,它会像下面这样(但不正确)

<div class="@(package.GetPropertyValue<bool>("test") ? "test" : package.GetPropertyValue<bool>("test1") ? "test1" : "test2" )"></div>

这可以做到吗,或者有人可以建议我在满足特定条件时如何将特定类应用于该 div?

非常感谢 保罗

【问题讨论】:

    标签: if-statement razor umbraco ternary-operator ternary


    【解决方案1】:

    是的,您可以嵌套三元运算符,但要小心过于疯狂,否则您可能会使代码难以阅读。你可以这样做:

    @{
    var css = package.GetPropertyValue<bool>("test") ? "test" : 
        package.GetPropertyValue<bool>("test1") ? "test2" : 
          package.GetPropertyValue<bool>("test2") ? "test3" : "";
    }
    <div class="@css"></div>
    

    但是,这似乎是一个糟糕的设计。如果他们以后想要另一堂课怎么办?您还必须向三元运算符添加另一层嵌套,下次再等等。如果此属性仅用于设置样式,为什么不拥有一个带有下拉列表的属性,让他们选择样式,消除需要嵌套的三元运算符。

    【讨论】:

    • 嗨蒂姆,感谢您的回答,我会试一试。样式只有三个 div,所以我不必担心添加更多。感谢您的建议,尽管我会记住这一点。
    猜你喜欢
    • 2021-09-16
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2019-12-11
    • 1970-01-01
    • 2013-10-30
    • 2017-07-10
    相关资源
    最近更新 更多