PostBack上的值丢失了

时间:2011-06-18 07:51:48

标签: asp.net-mvc-3 postback

我正在使用来自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方法中丢失了。

帮助!

1 个答案:

答案 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");      
}