2

所以我以前见过这样做,我完全忘记了语法在哪里或是什么。非常感谢您的帮助。

所以我有一个元素,我想根据 Umbraco CMS 中填写或未填写的属性添加 CSS 样式。我认为它在元素标签之后涉及冒号 (:) 或类似的东西。但不完全确定。

我想做这样的事情

 foreach(var item in @Model.myNodeList)
      if(@item.myProperty != String.Empty){
      <div class="myStyleOne">
      }
      else if(@item.myProperty == String.Empty){
      <div class="myStyleTwo">
      }
      else{
     <div class="myDefaultStyle">
      }
        <p>My content that will be inside of this div with different starting tags</p>
      </div>
 }

我知道这段代码并不完全正确,而且我遗漏了一些东西。谁能指出我正确的方向?谢谢。

4

3 回答 3

2

你的意思是条件运算符

<div class="@(item.myProperty != String.Empty ? "myStyleOne" : "myStyleTwo")">

看到字符串是否为空,我不确定您myDefaultStyle的位置。

这也适用于内联样式。在评论中使用您的示例,它看起来像这样

<div style="@(item.boxBackgroundColor != String.Empty ? "background-color:" + item.boxBackgroundColor + "; color:#fff !important" : "background-color:#fff;")">
于 2012-11-02T15:10:35.027 回答
0

@:并且该@Html.Raw()方法将做同样的事情。但是@:会让你继续输入 html 而@Html.Raw()需要一个字符串。

您可以通过使用该类的变量来稍微清理您的代码:

foreach (var item in Model.myNodeList)
{
    string myClass = (item.myProperty != String.Empty) ? "myStyleOne" : "myStyleTwo";

    <div class="@myClass">
        <p>My content that will be inside of this div with the same starting tag</p>
    </div>
}
于 2012-11-17T05:57:18.247 回答
0

好的,以防万一其他人也想这样做。我发现它是什么。

这就是解决方案。它涉及在元素的开始和结束标记前添加 @: 符号。注意:取出最后一个else。感谢@Brandon。第一次这样做没有意义。布兰登的方式或这种方式也有效。

 foreach(var item in @Model.myNodeList)
    if(@item.myProperty != String.Empty){
    @:<div class="myStyleOne">
    }
    else if(@item.myProperty == String.Empty){
    @:<div class="myStyleTwo">
    }
    <p>My content that will be inside of this div with different starting tags</p>
    @:</div>
  }
于 2012-11-02T15:26:10.897 回答