17

此代码,在 Razor 视图中:

if (true)
{
    <table>
        <tbody>
}

...

if (true)
{
        </tbody>
    </table>
}

不运行。}它声称第一个语句没有结束if(),我猜这是因为<table>标签。

有没有办法解决这个问题来有条件地插入我的<table>标签?


尝试通过将 if 块括在 @{ } 语句中来使用剃须刀代码块,或者在 if 前面加上 @ 使其显示为 @if:

http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx

4

4 回答 4

41

尝试在标签前添加@:

if (true)
{
    @:<table>
        @:<tbody>
}

...

if (true)
{
        @:</tbody>
    @:</table>
}
于 2013-07-01T20:19:56.953 回答
2

您可以将其作为字符串插入,然后它们不会被解析为 html 并且不会干扰语法:

@Html.Raw(true?"<table><tbody>":"")

@Html.Raw(true?"</tbody></table>":"")
于 2013-07-01T20:22:32.067 回答
1

默认情况下,Razor 确实希望匹配的结束标记位于语句内部。

您可以使用特殊<text>标签来帮助 Razor:

@if (true) {
    <text>
    <table>
        <tbody>
    </text>
}
于 2013-07-01T20:21:02.433 回答
0

尝试通过将 if 块括在 @{ } 语句中来使用剃须刀代码块,或者在 if 前面加上 @ 使其显示为 @if:

http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx

于 2013-07-01T20:18:20.993 回答