2012-01-17 63 views
0

可能有人請給我講解一下:MVC jQuery的崗位500錯誤

我有一個MVC方法我想張貼在jQuery的一些日期,看起來像這樣:

public bool UpdateOfficeUser(InvoiceLine invoiceLineUpdates) 
     { 
      var invoiceLine = _unitOfWork.InvoiceLineRepository.Get(invoiceLineUpdates.InvoiceLineId); 

      ... 

      return true; 
     } 

這就是所謂的當類dropdownofficeapprover的下拉改變:

//Office approver changed 
    $(".dropdownofficeapprover").change(function() { 
     var invoiceLineId = $(this).attr("invoiceLineId"); 

     $(".dropdownofficeapprover[invoicelineid='" + invoiceLineId + "'] option:selected").each(function() { 
      var invoiceLine = { 
       OfficeUserId: 7 
      }; 
      alert(invoiceLine.InvoiceLineId); 
      alert(invoiceLine.OfficeUserId); 

      $.post('/Invoice/UpdateOfficeUser', invoiceLine, function (data) { 

       if (data == 'False') { 

        alert("You must have at least two different approvers"); 
        location.replace(window.location.pathname); 
       } 
      }); 
     }); 
    }); 

一切工作正常,直到發生後。然後我得到一個500錯誤。

回答

2

Then I get a 500 error.

嘗試在控制器操作中逐步執行代碼並查看它是否引發異常以及出於何種原因。甚至更好:使用諸如FireBug之類的JavaScript調試工具來跟蹤實際的AJAX請求,查看來自服務器的請求和響應。這應該給你指出什麼是錯誤的,以便你得到這個500錯誤。

此外,您似乎永遠不會分配您要發送到服務器的invoiceLine對象的InvoiceLineId屬性。

此外,您似乎正在發送多個AJAX請求爲每個符合您的標準,顯然是非常無效的下拉列表。我建議你將所有必要的數據提取到一個對象中,或者在你的情況下將對象數組發送給服務器併發送一個AJAX請求。您當然必須修改您的控制器操作才能使用您將發送的這個新視圖模型。

+0

我有一個MVC方法入口的斷點,但它永遠不會到達那裏。 Firebug顯示以下內容。 POST HTTP://本地主機:XXXXX /發票/ UpdateOfficeUser 500內部服務器錯誤 \t \t \t 502ms的jquery .... min.js(第4行) 「NetworkError:500內部服務器錯誤 - HTTP://本地主機:XXXXX/Invoice/UpdateOfficeUser「 – AnonyMouse

+0

@AnonyMouse,你在這個請求的Response選項卡中看到了什麼?服務器的實際響應是什麼? –

+0

感謝您的幫助。響應告訴我,InvoiceLine有一個引起空引用異常的屬性。我不像我應該那樣熟悉螢火蟲,所以並不完全知道你可以檢查。感謝您指點我正確的方向。 – AnonyMouse