1

尝试使用多个 FOR 循环(for in for)时遇到问题。错误信息是:

解析器错误消息: for 块缺少结束“}”字符。确保此块中的所有“{”字符都有一个匹配的“}”字符,并且没有一个“}”字符被解释为标记。

这是我的代码,问题来自第一个 for :( 。

<table width="100%" border="1">
@for (int q = 0; q < quanList.Count; q++) {     
    <tr>
        <td>@quanList[q]</td>

        @for (int s = 0; s < sizeList.Count; s++) {         
            <td><input type="text" name="txtval" style="width:80px" /></td>
        }
    </tr>
}   
</table>

非常感谢您的任何建议和想法。

我想显示一个具有动态行和列的表,从控制器创建了两个列表并通过 ViewBag 解析以查看:

@{
List<string> sizeList = (List<string>)ViewBag.SizeList;
List<string> quanList = (List<string>)ViewBag.QuanList;

}

4

3 回答 3

2
<table width="100%" border="1">
@{List<int> quanList = new List<int>();
  List<int> sizeList = new List<int>();
}
for (int q = 0; q < quanList.Count(); q++) {
<tr>
    <td>@quanList[q]
    </td>
    for (int s = 0; s < sizeList.Count(); s++){
    <td>
        <input type="text" name="txtval_@q_@s" style="width: 80px" />
    </td>
    }
</tr>
} }
</table>

试试这个 :

尝试将其重命名@q @s为其他名称。如果你把它们混在一起,MVC 就会把它们当作一个普通@的例子example@example.com

{int textFieldName = "txtval_" + q +
        "_" + s;
        <td>
            <input type="text" name="@textFieldName" style="width: 80px" />
        </td>
        }
于 2012-08-17T10:05:44.537 回答
1

尝试将输入名称更改为以下内容:

<input type="text" name="txtval_@(q)_@(s)" style="width:80px" />

那些额外的括号应该可以解决它

于 2012-08-17T10:11:22.677 回答
1

您需要@使用 double 转义符号@

<td><input type="text" name="txtval_@@q_@@s" style="width:80px" /></td>

或者,如果您需要 q 和 s 值,则可以包含括号:

<td><input type="text" name="txtval_@(q)_@(s)" style="width:80px" /></td>
于 2012-08-17T10:14:38.257 回答