如果在 MVC5 中开始元素损坏了?
if with start elements broken in MVC5?
做一些简单的事情:
<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>
我省略了所有其他字段,以及 header 行。
因为是"The foreach block is missing a closing "}”字符而抛出错误。”
当然不是,但它看到两个 tr - 每个条件一个,并且没有意识到(显然)只有其中一个会被渲染,它希望我关闭在 }
之前
我尝试添加:
if (false)
{
</tr>
}
但它显然足够聪明,可以删除它。
我试着把它放在一个条件中:
<tr style="background: @{return (ban.Active?"white":"lightgrey"}>
以及各种类似的尝试。
我也许可以把它放在自己的部分中,但我预计这也行不通。
有什么建议吗?
我正在使用 MVC5
您的条件格式不正确。使用显式代码块时,您只需将条件语句括在方括号中,而不是大括号中,无需 return 语句。
<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>
做一些简单的事情:
<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>
我省略了所有其他字段,以及 header 行。
因为是"The foreach block is missing a closing "}”字符而抛出错误。”
当然不是,但它看到两个 tr - 每个条件一个,并且没有意识到(显然)只有其中一个会被渲染,它希望我关闭在 }
之前我尝试添加:
if (false)
{
</tr>
}
但它显然足够聪明,可以删除它。
我试着把它放在一个条件中:
<tr style="background: @{return (ban.Active?"white":"lightgrey"}>
以及各种类似的尝试。 我也许可以把它放在自己的部分中,但我预计这也行不通。
有什么建议吗?
我正在使用 MVC5
您的条件格式不正确。使用显式代码块时,您只需将条件语句括在方括号中,而不是大括号中,无需 return 语句。
<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>