2012-07-31 145 views
0

我使用的jqGrid模式窗體添加和表格的編輯行。我使用實體框架和數據庫優先方法從現有數據庫創建模型。當我添加或編輯行時,行會被正確添加或編輯並正確保存在數據庫中,當我在jqGrid中檢索添加或編輯的行和視圖時,它們會正確顯示。不過,唯一的問題是,當我添加或編輯,它拋出錯誤狀態:「內部服務器錯誤」。錯誤代碼:500以模式形式。錯誤狀態:'內部服務器錯誤'。錯誤代碼:500 - jqGrid的ASP.NET MVC

任何人都知道爲什麼會發生這種情況?由於添加或編輯正常發生,是否有一種方法可以忽略此錯誤消息並使其不顯示?

任何幫助,非常感謝!

編輯:

public ActionResult Create(string oper, string id, Employee employee) 
{ 
try 
{ 
if (oper == "add") 
{ 
    if (ModelState.IsValid) 
    { 
    db.Employees.Add(employee); 
    db.SaveChanges(); 
    return RedirectToAction("Index"); 
    } 
} 
if (oper == "edit") 
{ 
    if (ModelState.IsValid) 
    { 
    db.Entry(employee).State = EntityState.Modified; 
    db.SaveChanges(); 
    return RedirectToAction("Index"); 
    } 
} 
    if (oper == "del") 
    { 
    Employee employees = db.Employees.Find(Int32.Parse(id)); 
    db.Employees.Remove(employees); 
    db.SaveChanges(); 
    return RedirectToAction("Index"); 
    } 
} 
catch (InvalidOperationException ex) 
{ 
} 
catch (Exception e) 
{ 
} 
} 
+1

您應該調試在添加/編輯操作時將在服務器端執行的代碼。代碼有一個產生異常的錯誤。您可以逐步調試代碼,例如查找問題的原因。 – Oleg 2012-07-31 16:03:57

+0

用附加的調試器運行站點,我相信你會看到拋出的異常。否則,使用瀏覽器調試工具(螢火蟲,Chrome開發者工具,IE開發者工具)檢查從請求,這應該是一個YSOD – 2012-07-31 16:07:22

+0

@Oleg返回的數據:您的建議感謝。我調試了代碼,奇怪的是它沒有拋出任何異常,我把代碼放在try/catch中,注意到沒有拋出任何異常。在能夠成功添加/編輯記錄並進行適當處理之前,我能夠查看所有例外情況。但是,在正確添加/編輯記錄之後,沒有發現異常,但仍會引發此錯誤。這就是我很困惑。任何建議以某​​種方式處理這個錯誤,而不是在服務器端被捕獲? – inspiringmyself 2012-07-31 16:09:10

回答

1

感謝大家對您的建議。我知道我做錯了什麼。實際上,問題不在於數據格式不正確或代碼未被命中,問題出在我將更改保存到數據庫之後,這就是爲什麼它沒有被捕獲到異常塊中。

在將對數據庫的更改保存爲[db.SaveChanges()]後,我將重定向到索引操作。這就是問題所在。我正在重定向到錯誤的索引操作。這個Index操作中的代碼試圖返回一個null值,因此引發了ArgumentNullException,並顯示了YSOD。

注意:我能用事件查看器發現ArgumentNullException。在運行中鍵入事件查看器並轉到Windows日誌 - 應用程序。您將能夠看到您的應用程序的所有警告。打開警告,轉到常規選項卡,您將能夠看到拋出什麼樣的異常。希望這可以幫助有需要的人。

相關問題