我在视图中有一个列表,其中的值需要更新。 当调用http方法时,我将遍历列表组件,并在数据库中查找具有正确ID的项目并更新Grade值。我的问题是我无法从数据库返回正确的项目,它总是返回null。我已经通过调试进行了检查,列表中的项目以及我要查找的ID具有正确的值,但是我无法从db返回该项目。 我也尝试了sql原始查询,它给了我同样的错误。 这是我的代码-var考试始终为null:
public ActionResult UpdateExams(ExamsList examList)
{
var examVM = new ExamViewModel
{
Professor = _context.Professor.ToList()
};
examVM.ExamsList = examList;
if (!ModelState.IsValid)
{
var GradesList = new List<int>();
for (int i = 5; i <= 10; i++)
{
GradesList.Add(i);
}
var GradesListSL = new SelectList(GradesList);
return PartialView("ExamsTable", examList);
}
try
{
for (int i = 0; i < examList.ExamDetails.Count; i++)
{
var exam = _context.Exam.Single(e => e.Id == examList.ExamDetails[i].Id);
// var exam = _context.Database.SqlQuery<Exam>(@"SELECT Id as Id,Grade as Grade
//FROM Exam
//WHERE Id={0})
//", examList.ExamDetails[i].Id).ToList();
exam.Grade = examList.ExamDetails[i].Grade == 0 ? exam.Grade : examList.ExamDetails[i].Grade;
}
// _context.SaveChanges();
TempData["InsertingExam"] = "Success!";
// return RedirectToAction("Create", "Exams");
return Json(new { redirectTo = Url.Action("Edit", "Exams") });
}
catch (System.Data.Entity.Infrastructure.DbUpdateException ex) //DbContext
{
string exception = ex.StackTrace + ex.Message;
ModelState.AddModelError("Error", exception);
return View(examVM);
throw;
}
catch (Exception ex)
{
string exception = ex.StackTrace + ex.Message;
ModelState.AddModelError("Error", exception);
return View(examVM);
throw;
}
finally
{
_context.SaveChanges();
}
}
答案 0 :(得分:0)
问题是我试图使用视图模型类进行数据库操作。 从视图模型添加创建模型类后,一切正常。