我使用jqgrid Modal表单来添加和编辑表的行。我正在使用Entity框架和Database First方法从现有数据库创建模型。当我添加或编辑行时,正确添加或编辑行并在数据库中正确保存行,当我在jqGrid中检索添加或编辑的行和视图时,它们会正确显示。但是,唯一的问题是当我添加或编辑时,它会抛出 错误状态:'内部服务器错误'。模式形式的错误代码:500 。
任何人都知道为什么会这样?由于添加或编辑正确发生,有没有办法可以忽略此错误消息并使其不显示?
非常感谢任何帮助!
修改
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)
{
}
}
答案 0 :(得分:1)
感谢大家提出的所有建议。我弄清楚我做错了什么。实际上,问题不在于数据格式不正确或代码未被命中,问题出在我将更改保存到数据库之后,这就是为什么它没有在异常块中被捕获。
将更改保存到[db.SaveChanges()]后,我将重定向到Index Action。这就是问题所在。我正在重定向到错误的索引操作。此Index操作中的代码尝试返回一些null值,因此抛出了ArgumentNullException并显示了YSOD。
注意:我能够使用事件查看器发现ArgumentNullException。在运行中键入事件查看器并转到Windows日志 - 应用程序。您将能够看到您的应用程序的所有警告。打开警告,转到常规选项卡,您将能够看到抛出的异常类型。希望这可以帮助有需要的人。