使用MVC,如何基于<td>中包含的日期将某个类格式化为<tr>?

Dbl*_*oom 0 c# asp.net-mvc view razor

我有一个MVC应用程序,显示Windows部署的进度.在我看来,我有一个表格,显示每个部署的当前状态.其中一个属性是最后一次部署签入('CurrentTime').我想改变如果CurrentTime超过4小时前的风格.

在我的MVC视图中,我试图做这样的事情:

@foreach (var item in Model)
{
    if(item.CurrentTime < DateTime.Now.AddHours(-4))
    {
        @:<tr class="warning">
    }
    else
    {
        @:<tr>
    }
Run Code Online (Sandbox Code Playgroud)

这不起作用.我收到一个解析器错误:

遇到没有匹配开始标记的结束标记"tr".您的开始/结束标签是否正确平衡?

什么是简单的方法(我只是学习MVC /网络编程)来实现这一目标?

Eri*_*sch 7

最简单的方法(更清洁)是做这样的事情:

@foreach (var item in Model)
{
    var warning = item.CurrentTime < DateTime.Now.AddHours(-4) ? "warning" : null;
    <tr class="@warning">
       <td></td>
    </tr>
}
Run Code Online (Sandbox Code Playgroud)

Razor 2+的一个很好的特性是,如果值为null,它将自动删除类属性.此功能称为"条件属性",如果需要,您可以在此处阅读更多内容.

http://www.davidhayden.me/blog/conditional-attributes-in-razor-view-engine-and-asp.net-mvc-4