我有一个模型,返回一个可变数量用户的足球比赛选择的IEnumerable。因此,我正在动态构建一个具有可变数量列的HTML表格。基本上,我的选择会像这样返回。但是,每场比赛将为每个用户重复,因此我只在每个表行中添加前3列一次,然后仅添加单个标签,直到游戏ID更改。我知道可能有更好的方法来解决这个问题,但这只是一个需要快速完成的小项目。我只想弄清楚为什么它不起作用。
GameID
GameDateTimeDisplay
GameTeamDisplay
WinningTeamDisplay
PickedTeamAbbr
好的,这里是不起作用的疯狂代码。我可以成功创建表头,但是tbody没有工作,并且在一个奇怪的地方出错。
我不得不把所有的@Html.Raw(...)都放在那里,因为没有它们,它无法找到foreach和if语句的结束标记。
无论如何,这是我的代码。引发异常的行是这样的: @gameID = @pick.Game.GameID;
异常是-->编译器错误消息:CS1525:无效的表达式项“=” Intellisense显示@gameID作为变量,@pick.Game.GameID似乎也是正确的。
<table>
<thead>
<tr>
<th>Game</th>
<th>Game Date/Time</th>
<th>Winner</th>
@foreach(var name in @Model.UserNames) {
<th>@name</th>
}
</tr>
</thead>
<tbody>
@{
int lastGameID = 0;
int gameID = 0;
bool firstGame = true;
}
@foreach(var pick in @Model.Picks) {
@gameID = @pick.Game.GameID;
if(@gameID != @lastGameID) {
if(!@firstGame){
<text>@Html.Raw("</tr>")</text>
}
@Html.Raw(
<tr>
<td>@pick.GameTeamDisplay</td>
<td>@pick.GameDateTimeDisplay</td>
<td>@pick.Game.WinningTeam.TeamAbbr</td>
<td>@pick.PickedTeamAbbr</td>
)
}
else {
@Html.Raw(<td>@pick.PickedTeamAbbr</td>)
}
}
@Html.Raw(</tr>)
</tbody>
</table>
更新: 我已经删除了@Html.Raw等内容...并且在@{}中包装了gameID赋值。现在它在这一行上给我一个错误, @{gameID = @pick.Game.GameID;}
编译错误:CS1501:方法“Write”的重载不接受0个参数
这是更新后的代码:
@foreach(var pick in @Model.Picks) {
@{gameID = @pick.Game.GameID;}
if(@gameID != @lastGameID) {
if(!@firstGame){
@:</tr>
}
@:<tr>
<td>@pick.GameTeamDisplay</td>
<td>@pick.GameDateTimeDisplay</td>
<td>@pick.Game.WinningTeam.TeamAbbr</td>
<td>@pick.PickedTeamAbbr</td>
}
else {
<td>@pick.PickedTeamAbbr</td>
}
}
</tr>