使用MVC禁用HTML呈现

时间:2012-12-08 06:11:33

标签: asp.net-mvc asp.net-mvc-3 razor

您好我是MVC的新手,我正在尝试创建一个显示备用颜色行的表。像这样:

@foreach (var item in Model) {

var result = "";
var styleWhite = @"style=""background-color:white""";
var styleBlue = @"style=""background-color:blue""";

if ( (item.ID % 1) == 0 )
{ result = styleBlue; }
else
{ result = styleWhite; }

<tr @result  >
    <td>
        @Html.DisplayFor(modelItem => item.CALLTYPE)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.DESCRIPTION)
    </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>
}

然而双引号仍然像以下那样呈现为“&amp; quote”:

<tr style=&quot;background-color:blue&quot;  >

有没有办法抑制渲染并在标记内获得双引号(或单引号)? 谢谢你的帮助。

3 个答案:

答案 0 :(得分:3)

Razor引擎默认情况下总是HtmlEncodes任何字符串。如果您需要覆盖此用途

@Html.Raw(result)

答案 1 :(得分:0)

找到答案:

<tr @Html.Raw(result)  >

也应该是mod 2而不是1。

答案 2 :(得分:0)

改为使用单引号:

@foreach (var item in Model) {

var result = string.Empty;
var styleWhite = @"style='background-color:white'";
var styleBlue = @"style='background-color:blue'";

if ( (item.ID % 1) == 0 )
{ result = styleBlue; }
else
{ result = styleWhite; }

<tr @result  >
    <td>
        @Html.DisplayFor(modelItem => item.CALLTYPE)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.DESCRIPTION)
    </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>
}