【问题标题】:Dynamic colors css or inline styling asp.net mvc razor动态颜色 css 或内联样式 asp.net mvc razor
【发布时间】:2018-01-29 15:22:08
【问题描述】:

所以这是我的 div,for 循环创建一个新的列表项,并根据数据库中工单的 ID 显示工单的所有状态,即打开、进行中、关闭等。

 <div id="Child" style="display:inline-block;" class="box">
            <ul id="first-list">
                <!--Foreach Goes Here-->
                @foreach (var item in Model)
                {
                <li>
                    <span></span>
                    <div class="title">
                        @Html.DisplayFor(model => item.Description)
                    </div>
                    <div class="info">@Html.DisplayFor(model => item.ActivityContent).</div>
                    <div class="info">@Html.DisplayFor(model => item.Subject) <a href=@Url.Action("EditActivity", "Home", new { area = "EditActivity", Id = item.TicketId , TypeId = item.ActivityTypeId }) data-toggle="modal" data-target="#editModal" data-modal="edit"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span></a></div>
                    <div class="name">- @Html.DisplayFor(model => item.CreatedByUser)</div>
                    <div class="time">
                        @if(item.ModifiedDateTime != null)
                        {
                            <span>@(item.ModifiedDateTime == null ? "" : Convert.ToDateTime(item.ModifiedDateTime).ToString("MMMM dd, yyyy"))</span>
                        }
                        else
                        {
                            <span>@(item.CreatedDateTime == null ? "" : Convert.ToDateTime(item.CreatedDateTime).ToString("MMMM dd, yyyy"))</span>
                        }
                        @if(item.ModifiedDateTime != null)
                        {
                            <span style="padding-left:35px;">@(item.ModifiedDateTime == null ? "" : Convert.ToDateTime(item.ModifiedDateTime).ToShortTimeString())</span>
                        }
                        else
                        {
                            <span style="padding-left:35px;">@(item.CreatedDateTime == null ? "" : Convert.ToDateTime(item.CreatedDateTime).ToShortTimeString())</span>
                        }
                    </div>
                </li>
                }
            </ul>
        </div> 

我想做的是为每个州添加不同的颜色。例如状态打开时为绿色,关闭时为红色。任何人都有一个很好的方法来解决这个问题?我在一个名为 box 的类中设置 div 的颜色,看起来像这样......

.box ul li {
            margin: 30px 60px 60px;
            position: relative;
            padding: 5px 5px 5px 5px;
            background: #e56565;
            color: #fff;
            border-radius: 10px;
            line-height: 20px;
            width: 55%
        }

提前感谢您对此问题的任何帮助。

【问题讨论】:

  • State 是每个项目的属性吗?它的结构如何?您是否在 GET 操作中填充它?
  • 我不确定 State 是否是每个项目的属性。是的,我从 get 操作中得到它。这些列是 id、ticketId、activityTypeId、ActivityContent、Subject 以及 createdDateTime、modifiedDateTime 和 OrderDateTime,如果 modified 为 null 并且如果 modified 大于 createddatetime,则显示 createddatetime 或 modifieddatetime。
  • 你从哪里得到状态?每个项目都有一个状态。不是吗?
  • 是的,不知道您所说的状态是什么意思,它来自 ActivityTypeId,我将使用另一个 get 操作来获取状态。
  • activityTypeId 和 state 是怎么联系起来的?

标签: html css asp.net asp.net-mvc razor


【解决方案1】:

更易于维护的方法是在状态查找表中添加一个新列,用于查找背景颜色或 css 类。用您想要的颜色播种值,然后从表中读取并使用它。

另一种选择是创建与状态名称/代码/id 匹配的 CSS 类。并使用它。这种方法的问题是,每次向系统添加新状态时,都需要更改代码(添加新的 css 类)。这些 css 类将简单地覆盖 bg 颜色。因此,您的代码将使用状态代码/名称/id/ 生成 css 类名称。

类似的东西。

@foreach (var item in Model)
{
  <li class="li-@(item.State.Code)">
     <!-- Existing code-->
  </li>
}

假设你有 open 和 closed 等 State code 值,你将创建 2 个 css 类

.li-open
{
  background-color:green;
}
.li-closed
{
  background-color: red;
}

这些特定的 css 类应该覆盖默认的 li 样式。在您的 css 中根据需要使用 !important

【讨论】:

  • 先检查控制器中的状态。在使用 ViewBag.Color = "green" 呈现页面之前,在控制器中设置 css 类。然后你有一个名为“green”的css类。在 html 中,标签看起来像:
  • 所以你认为我应该在数据库中设置颜色?然后以某种方式从数据库中获取它?
  • 完美答案。正是我正在寻找的东西,非常感谢您快速而直接的回答。
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签