如果有一个打开的``标签?<table> </table>,Razor`if`不会注册关闭`}`

时间:2013-07-01 20:11:13

标签: html asp.net-mvc if-statement razor html-table

此代码,在Razor视图中:

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

...

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

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

有没有办法可以解决此问题,有条件地插入我的<table>代码?

4 个答案:

答案 0 :(得分:33)

尝试使用@:

预先添加代码
if (true)
{
    @:<table>
        @:<tbody>
}

...

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

尝试使用razor代码块,将if块括在@ {}语句中,或者在if前加上@,使其显示为@if:

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