asp.net-mvc-3 – 剃刀索引视图中的条件格式

前端之家收集整理的这篇文章主要介绍了asp.net-mvc-3 – 剃刀索引视图中的条件格式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图根据项目到期日的距离,有条件地将CSS背景颜色添加到一组表格行。三十天以下应为红色,90 – 31天为琥珀色,其余为绿色。 (我把红色放在第一位,一旦这个工作,我会回去做琥珀色/绿色的行)。
@foreach (var item in Model)
{
    int daysLeft = (item.ExpiryDate - DateTime.Today).Days;

    if (daysLeft <= 30)
    { 
         <tr style="background-color:Red">
    }
    else
    {
        <tr>
    }

        <td>
            @Html.DisplayFor(modelItem => item.SupplierName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ExpiryDate)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.InceptionDate)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Value)
        </td>
        <td>
            @Html.ActionLink("Edit","Edit",new { id = item.Id }) |
            @Html.ActionLink("Details","Details",new { id = item.Id }) |
            @Html.ActionLink("Delete","Delete",new { id = item.Id })
        </td>
    </tr>
}

当我运行这个页面,我得到一个YSOD说,@foreach块缺少其关闭},但据我看到他们是匹配的,所以我假设实际的问题是别的。

解决方法

剃刀要求直接在代码块内部的标签是平衡和良好的。
因此,第一次打开之后的所有代码< tr>标签实际上被解析为标记,所以最终}只是关闭if。

解决这个问题,您可以强制Razor通过使用@:的前缀来忽略该标记

或者,你可以摆脱如果完全和写

string style = daysLeft <= 30 ? "background-color:Red" : null;
<tr style="@style">
    ...
</tr>

猜你在找的asp.Net相关文章