基于枚举值的样式

时间:2014-07-24 14:18:10

标签: c# css asp.net asp.net-mvc

我有一个枚举如下:

 enum ProgressStatus{
   Approved,
   Unapproved,
   InProcess
 }

我有一个使用此类的Project对象。根据枚举值,我需要在造型时将其值显示为绿色,黄色或蓝色。

<ol class="breadcrumb">
      @if (Model.ProgressStatus == ProgressStatus.Approved)
      {
        <li style="color:red;"><label>Vaziyet Planı</label></li>
      }

</ol>

这就是我尝试这样做但却变得笨拙和笨拙。

完成这项工作的正确方法是什么?

3 个答案:

答案 0 :(得分:2)

将此放在您的视图中:

@{

    var labelColours = new Dictionary<ProgressStatus, string>()
    {
        { ProgressStatus.Approved, "green" },
        { ProgressStatus.Unapproved, "yellow" },
        { ProgressStatus.InProcess, "blue" }
    };
}

然后在你的标签中使用它:

<li style="color: @labelColours[Model.ProgressStatus];">

答案 1 :(得分:2)

使用您的枚举,您可以使用短开关来设置颜色:

@{
    string color;
    switch(Model.ProgressStatus)
    { 
         case ProgressStatus.Approved : color = "green"; break; 
         case ProgressStatus.Unapproved : color = "yellow"; break; 
         //...
    }
 }

然后你只需要一个元素

 <li style="color:@color;"><label>Vaziyet Planı</label></li>

这真的是对Stijn的回答的另一种看法。我更喜欢他。

答案 2 :(得分:0)

将此逻辑放入控制器并将其解析为绑定到视图的单个模型属性。

<li class='@Model.FinalStyle'><label>@Model.Text</label></li>