加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 00:30:02 所属栏目:asp.Net 来源:网络整理
导读:我试图根据项目到期日的距离,有条件地将CSS背景颜色添加到一组表格行。三十天以下应为红色,90 – 31天为琥珀色,其余为绿色。 (我把红色放在第一位,一旦这个工作,我会回去做琥珀色/绿色的行)。 @foreach (var item in Model){ int daysLeft = (item.Expi
我试图根据项目到期日的距离,有条件地将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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读