MVC Razor - 将颜色应用于动态生成的div标签

时间:2017-09-13 11:56:53

标签: c# asp.net-mvc razor

我有一个小程序正在工作(大部分)。它从数据库返回一个商品代码并返回该代码的数量。然后我在Razor中有一个@foreach代码块来动态创建包含名称和数量的div。在其余代码中,有Knockout函数可自动更新显示。但是......我遇到的问题是尝试为每个div应用不同的背景颜色。

@foreach (var x in Model.Quantities)
{
    int itemCode = x.ItemEncode;
    string itemName = "";
    int quantity = x.Quantity;
    switch (itemCode)
    {
        case 11:
        <style>.getcolour {background-color: blue}</style>
            itemName = "Item A";
            break;
        case 12:
            <style>.getcolour {background-color: skyblue}</style>
            itemName = "Item B";
            break;
        case 21:
            <style>.getcolour {background-color: red}</style>
            itemName = "Item C";
            break;
        case 31:
            <style>.getcolour {background-color: pink}</style>
            itemName = "Item D";
            break;
        case 41:
            <style>.getcolour {background-color: purple}</style>
            itemName = "Item E";
            break;
        case 61:
            <style>.getcolour {background-color: green}</style>
            itemName = "Item F";
            break;
    }


    <div class="getcolour">
        <h3>@Html.Raw(itemName)</h3>
        <hr />
        <h2>@Html.Raw(quantity)</h2>
    </div>
}

itemNames和Quantities正确显示,因此foreach块正在工作,但每个div都使用Switch语句中的最后一种颜色(绿色)进行渲染。任何关于正确应用颜色的建议都将非常感激。

1 个答案:

答案 0 :(得分:0)

请试一试。

@foreach (var x in Model.Quantities)
{
    int itemCode = x.ItemEncode;
    string itemName = "";
    int quantity = x.Quantity;
    string bgColor = "";
    switch (itemCode)
    {
        case 11:
            bgColor = "blue";
            itemName = "Item A";
            break;
        case 12:
            bgColor = "skyblue";
            itemName = "Item B";
            break;
        case 21:
            bgColor = "red";
            itemName = "Item C";
            break;
        case 31:
            bgColor = "pink";
            itemName = "Item D";
            break;
        case 41:
            bgColor = "purple";
            itemName = "Item E";
            break;
        case 61:
            bgColor = "green";
            itemName = "Item F";
            break;
        default: break;
    }

    <div style="background-color:@bgColor">
        <h3>@Html.Raw(itemName)</h3>
        <hr />
        <h2>@Html.Raw(quantity)</h2>
    </div>
}