我正在使用来自EntityFranmework的MVC3和类generetad将一些数据保存到数据库中。
控制器
// Get
public ActionResult Create(Guid StudentID)
{
Semester semester = new Semester();
ViewBag.BranchID = new SelectList(db.Branches, "ID", "Name");
semester.Student = db.Students.Single(s => s.ID == StudentID);
return PartialView(semester);
}
//
// POST: /Semester/Create
[HttpPost]
public ActionResult Create(Semester semester)
{
semester.ID = Guid.NewGuid();
semester.CreatedDate = DateTime.Now;
semester.CreatedBy = "ddf";
db.Semesters.AddObject(semester);
db.SaveChanges();
return RedirectToAction("Index", "Student");
}
我在get方法中得到了学生的所有结果,但所有学生数据都在post方法中丢失了。
帮助!
答案 0 :(得分:2)
传递给POST操作的对象与在GET操作中传递给视图的对象不同。在您的POST操作中,您使用 仅 参数请求(查询字符串,发布数据)获得MVC创建的Semester
实例 - 这意味着学生实例早已消失。您需要将学生ID传递给POST操作并填写。
[HttpPost]
public ActionResult Create(Guid studentID, Semester semester)
{
semester.ID = Guid.NewGuid();
semester.CreatedDate = DateTime.Now;
semester.CreatedBy = "ddf";
semester.Student = db.Students.Single(s => s.ID == StudentID);
db.Semesters.AddObject(semester);
db.SaveChanges();
return RedirectToAction("Index", "Student");
}