Umbraco或MVC Razor Element在标签的开头可能有不同的CSS样式

时间:2012-11-02 15:08:20

标签: razor umbraco

所以我之前已经看过这个,我完全忘记了语法的位置或内容。 非常感谢帮助。

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

我想做这样的事情

 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>
 }

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

3 个答案:

答案 0 :(得分:2)

你的意思是conditional operator

<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;")">

答案 1 :(得分:0)

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

这是解决方案。它涉及在元素的开始和结束标记前添加@:符号。 注意:取出最后一个。谢谢@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>
  }

答案 2 :(得分: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>
}