use*_*751 6 c# asp.net asp.net-mvc
我想在表格中输出玩家的统计数据.根据当天的情况,并非所有玩家都有统计数据.我尝试过其他方式,所有人都在抱怨.这是我现在的代码:
<tbody>
@foreach(var player in @ViewBag.Roster){
int index = 0;
<tr>
<td>@player.Name, @player.TeamName @player.Position</td>
if(@ViewBag.Stats[index] == null){
<td>--</td>
<td>--</td>
<td>--</td>
<td>--</td>
}
else{
<td>@ViewBag.Stats[index].Points</td>
<td>@ViewBag.Stats[index].Rebounds</td>
<td>@ViewBag.Stats[index].Assists</td>
<td>@ViewBag.Stats[index].Turnovers</td>
}
</tr>
index++;
}
</tbody>
Run Code Online (Sandbox Code Playgroud)
异常详细信息:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:无法对空引用执行运行时绑定
来源错误:
第32行:}
第33行:else {
第34行:@ ViewBag.Stats [index] .Points
第35行:@ ViewBag.Stats [index] .Rebounds
第36行:@ ViewBag.Stats [index] .Assists
好的,我在这里发布完整的答案 -
尝试@之前从内部if(@ViewBag.Stats[index] == null){删除,使它看起来像这样 -@@ViewBagif@if(ViewBag.Stats[index] == null){
你在index = 0里面设置,foreach所以它在每个循环中初始化.foreach像这样在外面初始化它
var index = 0;
foreach ...
如果您遇到范围问题,试试这个 -
@{
var index = 0;
foreach (....) {
.......
index++
}
}
Run Code Online (Sandbox Code Playgroud)