做一些简单的事情:
<table>
<body>
@foreach (PlayerBanModel ban in Model.Bans)
{
if (ban.Active)
{
<tr style="background: yellow">
}
else
{
<tr style="background: lightgrey">
}
<td>@ban.Active </td>
</tr>
}
</table>
我遗漏了所有其他字段和标题行。
引发错误,因为它是&#34; foreach块缺少关闭&#34;}&#34;字符。 &#34;
当然,它不是,但是它看到了两个tr - 每个条件中有一个,并且(显然)没有意识到其中只有一个会被渲染,它希望我在}
之前关闭我尝试添加:
if (false)
{
</tr>
}
但它显然足够聪明,可以删除它。
我试图把它放在有条件的地方:
<tr style="background: @{return (ban.Active?"white":"lightgrey"}>
和各种类似的尝试。 我或许可以把它放在自己的部分中,但我希望它也不会起作用。
建议?
我正在使用MVC5
答案 0 :(得分:2)
您的条件格式不正确。使用显式代码块时,只需将条件语句用括号括起来,而不是括号,而不需要返回语句。
<tr style="background: @(ban.Active ? "white" : "lightgrey")">
对于原始代码,解析器将一些标记解释为代码,因为它位于if
语句中。您可以使用@:
将这些行标记为特定文本,但是更容易执行内联条件。
<table>
<tbody>
@foreach (PlayerBanModel ban in Model.Bans) {
if (ban.Active) {
@:<tr style="background: yellow">
}
else {
@:<tr style="background: lightgrey">
}
<td>@ban.Active </td>
@:</tr>
}
</tbody>
</table>