前几天我重写了我的 MVC 应用程序的一部分,现在我收到了一个 RuntimeBinderException 说明“无法对空引用执行运行时绑定”。
我在控制器中为 ViewBag 变量 AvailableDocuments 分配一个集合(字典)并在视图中迭代它。我可以很好地完成第一个循环,但是当代码到达第二个 for 循环的退出点时,它会抛出这个异常。我已经用几种不同的方式重写了它,并且总是遇到同样的问题。我可以摆脱这个异常的唯一方法是从此视图中删除第二个/第三个循环。另外,我已经使用调试器来验证我没有在集合中接收到任何空值,并且第一个循环没有(无缘无故地)对该集合执行更改。
@foreach (KeyValuePair<int, string> doc in ViewBag.AvailableDocuments)
{
<option value="@doc.Key" @((ViewBag.Product.Documents[0].OriginalDocID == doc.Key) ? "selected" : "")>@doc.Value</option>
}
这是重复三次的 for 循环(以填充三个下拉菜单)。唯一改变的是 Documents 的索引(不为空)。
Line 62: <select name="Doc1" style="width:300px;">
Line 63: <option value="-1">Don't Display a Document</option>
Line 64: @foreach (KeyValuePair<int, string> doc in ViewBag.AvailableDocuments)
<--换行
Line 65: {
Line 66: <option value="@doc.Key" @((ViewBag.Product.Documents[0].OriginalDocID == doc.Key) ? "selected" : "")>@doc.Value</option>
'
和消息:
Exception Details: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot perform runtime binding on a null reference