Значения на PostBack теряются - PullRequest
0 голосов
/ 18 июня 2011

Я использую MVC3 и классы generetad из EntityFranmework для сохранения некоторых данных в базу данных.

Контроллер

// 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 Ответ

2 голосов
/ 18 июня 2011

Объект, переданный в действие POST, отличается от объекта, переданного в представление в действии GET. В вашем действии POST вы получаете Semester экземпляр, созданный MVC с использованием только параметров Request (строка запроса, данные публикации) - это означает, что экземпляр Student давно исчез. Вам нужно будет передать идентификатор студента в действие 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");      
}
...