MVC3 Razor语法麻烦

kfu*_*ang 8 syntax razor asp.net-mvc-3

我试图在MVC3中使用Razor语法创建一个非常简单的视图,但似乎我无法正确使用语法.

我有一个像这样的简单表

<table>
                <tr>
                    @{
                        var counter = 0;
                    }

                    @foreach (var category in ViewBag.Categories)
                    {
                        counter++;
                        <td>
                            <input type="checkbox" checked="checked" name="@("category" + category.Code)" />
                            @category.Description
                        </td>

                        if (counter % 2 == 0)
                        {
                            </tr>
                            <tr>
                        }
                    }
                </tr>
            </table>
Run Code Online (Sandbox Code Playgroud)

当我在if语句中插入和内部时,我收到此错误

using块缺少一个结束"}"字符.

如果我尝试将这两个标签包装在里面,我会得到这个错误:

"tr"元素未关闭.

GvS*_*GvS 14

</tr><tr>弄乱了html /代码组合的"流程".

您正在关闭不同级别的tr-tag,而不是html中的不同级别,而是在代码内部.你应该欺骗razor输出html,它不解析自己.

你可以像这样包括它们:

@:</tr><tr>
Run Code Online (Sandbox Code Playgroud)

要么

@Html.Raw("</tr><tr>")
Run Code Online (Sandbox Code Playgroud)

结果:

                        if (counter % 2 == 0)
                        {
                            @:</tr><tr>
                        }
Run Code Online (Sandbox Code Playgroud)

点击Haack 快速参考Razor语法

  • 我想知道这是否适合社区维基?我真的可以用它.即使剃刀语法非常干净,有时它会让我的大脑混乱;) (2认同)