2011-06-18 65 views
0

我正在使用MVC3和EntityFranmework的classesretad將一些數據保存到數據庫中。PostBack丟失的數值

控制器

// 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

您的意思是說,傳遞給Post方法的Semester對象爲null或具有空值?如果是這樣,我懷疑它可能是一個有約束力的問題,在這種情況下你可以分享你的視圖HTML? –

回答

2

傳遞給POST動作的對象與GET動作中傳遞給視圖的對象不同。在您的POST動作中,您將獲得由MVC創建的實例Semester只有參數請求(查詢字符串,發佈數據) - 這意味着學生實例已經過去了。您需要將學生證傳遞給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");  
}