【发布时间】:2013-05-13 06:50:40
【问题描述】:
我正在开发一个 asp.net mvc 3 应用程序。我使用 Razor 来表达我的观点。星期五我遇到了这个问题,并认为我已经解决了它,但现在我发现这只是一些私人案例,事情出于某种原因。
我有一个有四列的表格,但每一行在一个单元格中可能有不同数量的字段,所以我正在研究某种算法,它将用属于它们的所有信息填充我的单元格。这就是我现在拥有的:
@{
int tempColumn = 1;
}
<tr>
@foreach (var field in Model)
{
if (field != null)
{
<td>
@for (int i = 0; i < field.Count; i++)
{
if (field[i].ColumnNo == tempColumn)
{
@field[i].QuestionText;
@field[i].FieldValue;
}
else if (field[i] != null)
{
tempColumn++;
@:</td>
@:<td>
@field[i].QuestionText;
@field[i].FieldValue;
}
}
}
@:</td>
}
</tr>
基本上这个想法是,无论我有多少对@field[i].QuestionText;/@field[i].FieldValue;,我都会在行的开头有一个开始的<td>标签,在行的末尾有一个结束的</td>标签排。我的算法也有问题,但在解决无法识别的闭合手镯问题之前,我无法继续。那么错误是什么 - 当我尝试在调试模式下运行此代码时,我收到此错误:
foreach 块缺少结束“}”字符。确保你 对其中的所有“{”字符都有一个匹配的“}”字符 块,并且没有“}”字符被解释为 标记。
但是当我转到代码本身时,我得到了关于 if 块和 for 块的相同错误。我认为使用这种语法插入 HTML <td> 和 </td> 标签 - @: 将保持我的 C# 代码的结构,并在我想要它们的地方添加标签,但从我认为似乎有一些原因至少有一个 <td> 或 </td> 标记被解释,以便它之后的所有内容都被识别为 HTML 标记而不是 C# 代码。那么在 C# 方法中插入 HTML 标记的正确方法是什么,或者如果错误是由其他原因引起的 - 可能是什么?
附言
任何关于算法的帮助都将不胜感激,尽管这不是这个问题的主题。
【问题讨论】:
标签: c# html asp.net-mvc-3 razor