基于Enum值的样式

本文关键字:样式 Enum 基于 | 更新日期: 2023-09-27 18:14:31

我有一个enum如下:

 enum ProgressStatus{
   Approved,
   Unapproved,
   InProcess
 }

我有一个使用这个类的Project对象。根据枚举值,我需要在样式化时显示它们的值为Green, Yellow或Blue。

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

这就是我尝试做的,但是它变得麻烦和笨拙。

做这件事的正确方法是什么?

基于Enum值的样式

对于enum,您可以使用一个短开关来设置颜色:

@{
    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答案的另一种理解。我更喜欢他的

把这个放到你的视图中:

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

然后在你的标签中使用:

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

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

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