【问题标题】:html.raw is not renderinghtml.raw 未呈现
【发布时间】:2015-07-18 05:14:17
【问题描述】:

我正在尝试使用以下代码修改表格行的背景颜色。但是,我收到解析器错误,因为关闭 tr 标记没有匹配的开始 tr。我尝试使用 @: 而不是 @Html.Raw(...),但我得到了同样的错误。如果我在条件块之外键入 tr 标签,它会呈现单个标签并且表格加载正常(只是没有交替的背景颜色)。

<table>
    <tr>
        <th>Count</th>
        <th>Username</th>
    </tr>
 @foreach (var item in Model)
    {
        i++;
        if (i % 2 == 0){
            @Html.Raw("<tr>");
        }
        else{
            @Html.Raw("<tr style=\"background-color: #c9c9c9\">");
        }

        <td>@i.ToString()</td>
        <td>
            @Html.DisplayFor(modelItem => item.User)
        </td>
    </tr>
    }
</table>

【问题讨论】:

  • 这种情况下不需要Raw,只需打印HTML
  • @Html.Raw(i%2==0 ? "" : "")

标签: c# html razor


【解决方案1】:

这些地方不需要@Html.Raw

保持标签不变&lt;tr&gt;

更新...添加您的代码。

<table>
    <tr>
        <th>Count</th>
        <th>Username</th>
    </tr>
 @foreach (var item in Model)
    {
        i++;
        if (i % 2 == 0){

            <tr>
        }
        else{
          <tr style='background-color: #c9c9c9'>
        }

        <td>@i.ToString()</td>
        <td>
            @Html.DisplayFor(modelItem => item.User)
        </td>
    </tr>
    }
</table>

【讨论】:

  • 删除 Html.Raw 导致缺少右括号的解析器错误。我认为这与 foreach 循环中的条件有关。我无法让它工作,但@craig-w 的解决方案成功了。感谢您的帮助
  • @Ryan 它应该有效。我确定有错字什么的。我已经用你的代码更新了我的答案,不包括Html.Raw。以防万一您仍然需要它。
【解决方案2】:

改为这样做。

<table>
    <tr>
        <th>Count</th>
        <th>Username</th>
    </tr>
    @foreach (var item in Model)
    {
        string backColor;
        i++;
        if (i % 2 == 0) {
            backColor = "whatever this color should be";
        }
        else {
            backColor = "#c9c9c9";
        }
    <tr style="background-color: @backColor">
        <td>@i.ToString()</td>
        <td>
            @Html.DisplayFor(modelItem => item.User)
        </td>
    </tr>
    }
</table>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 2013-09-09
    • 2018-10-09
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多