我有以下代码,当我看到项目中的剃刀语法被丢弃在我的膝盖上时,我担心这是一场噩梦。它不了解代码的哪个部分以及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样式而不是放置数据的列数。
答案 0 :(得分:4)
首先,删除分号。 Razor语法不使用它们。更重要的是,您不应该在视图中编写var c = Model.Instructor.Classes[i];
之类的内容。该视图应该只绑定到视图模型,该模型应该从控制器构建/返回。
您可以在控制器中设置映射到所需值的ViewBag
属性。这样的实际逻辑不应该在视图中。
最后,如果Razor无法解析您需要解析哪些术语(正如您在问题开头提到的那样,这是一个潜在的陷阱),您可以使用the <text>
tag明确勾画哪些部分应该是文本。