html.raw不呈现

时间:2015-07-17 20:29:06

标签: c# html razor

我尝试使用下面的代码修改表格行的背景颜色。但是,我得到一个解析器错误,因为关闭的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>

2 个答案:

答案 0 :(得分:4)

你在这些地方不需要@Html.Raw

只需将标记保留为<tr>

即可

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

<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>

答案 1 :(得分: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>