【问题标题】:Conditional Formatting in a Razor Index ViewRazor 索引视图中的条件格式
【发布时间】:2012-03-14 17:26:10
【问题描述】:

我正在尝试根据项目的到期日期有多近,有条件地将 CSS background-color 添加到一组表格行中。 30 天或更短的天数应为红色,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 块缺少它的关闭 },但据我所见,它们是匹配的,所以我假设 实际 问题是别的。

【问题讨论】:

    标签: asp.net-mvc-3 razor


    【解决方案1】:

    Razor 要求直接位于代码块内的标签必须平衡且格式正确。
    因此,第一个打开&lt;tr&gt;标签之后的所有代码实际上都被解析为标记,因此最后的}只是关闭了if

    要解决这个问题,您可以强制 Razor 忽略标记,方法是在行前加上 @:

    或者,您可以完全摆脱 if 并编写

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

    【讨论】:

      【解决方案2】:

      使用条件运算符

      布尔条件? true_expression : false_expression;

      http://msdn.microsoft.com/en-us/library/ty67wk28(v=vs.80).aspx

      @foreach (var item in Model)
      {
          int daysLeft = (item.ExpiryDate - DateTime.Today).Days;
      
          <tr style="@(daysleft < 30 ? "Background-color:red" : "")">   
      .....
      }
      

      【讨论】:

        猜你喜欢
        • 2021-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-27
        • 1970-01-01
        • 1970-01-01
        • 2019-05-09
        • 2016-10-20
        相关资源
        最近更新 更多