我改寫了我的MVC應用程序的一部分,有一天,現在我得到一個RuntimeBinderException指出「無法執行運行時對空引用結合」。ASP.NET MVC應用程序不喜歡我的for循環
我分配在控制器中的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循環。唯一改變的是文檔索引(不爲空)。
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)
< --break LINE
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
明顯的候選者是'ViewBag.Product'和'ViewBag.Product.Documents [0]'。仔細檢查它們。 –
刪除整個三元表達式後仍然拋出相同的異常。我實際上可以清空循環,並以相同的錯誤結束。 – krik