如果逻辑在for循环for asp.net MVC

时间:2012-05-10 21:46:19

标签: asp.net-mvc razor

我有以下代码,当我看到项目中的剃刀语法被丢弃在我的膝盖上时,我担心这是一场噩梦。它不了解代码的哪个部分以及HTML的哪个部分。

@for (int i = 0; i < Model.Instructor.Classes.Count;i++ )
        {
            var c = Model.Instructor.Classes[i];
            var mod = (i%2);
            if (mod==1)
            {
                <tr>
                   }

                    <td>
                        @c.Subject @c.CatalogNumber -  @c.Section
                    </td>
                    if (mod==0)
                    {
                </tr>
            }


        }

我只是想做一个简单的多列表,因为页面上的项目列表太长了。它打印出我的if逻辑,好像它是文本一样。如果我在它前面放一个@,它会给我一个语法错误。似乎应该有一个控件,但我看到的所有控件都担心alt样式而不是放置数据的列数。

1 个答案:

答案 0 :(得分:4)

首先,删除分号。 Razor语法不使用它们。更重要的是,您不应该在视图中编写var c = Model.Instructor.Classes[i];之类的内容。该视图应该只绑定到视图模型,该模型应该从控制器构建/返回。

您可以在控制器中设置映射到所需值的ViewBag属性。这样的实际逻辑不应该在视图中。

最后,如果Razor无法解析您需要解析哪些术语(正如您在问题开头提到的那样,这是一个潜在的陷阱),您可以使用the <text> tag明确勾画哪些部分应该是文本。