2013-06-12 61 views
0

更新项目后,我已经叫格法:TryUpdateModel - 为什么更新两个对象?

public void GridView1_UpdateItem(int noteId) 
{ 
    Notes itemToEdit = context.Notes.FirstOrDefault(x => x.NoteId == noteId); 
    Notes originalItem = context.Notes.FirstOrDefault(x => x.NoteId == noteId); 

    TryUpdateModel(itemToEdit); //it should update only object itemToEdit 
} 

为什么还TryUpdateModel(itemToEdit)更新对象originalItem?对象originalItem具有来自窗体的新值,但它应该具有旧值。

+0

的原因他们两个基本上是相同的 - itemToEdit和originalItem是指相同的内存对象。尝试使用例如context.Notes.ToList()。FirstOrDefault()并查看会发生什么。 – OzrenTkalcecKrznaric

+0

让我看看你的page_load事件 – Rahul

+0

@Ozren with context.Notes.ToList()。FirstOrDefault()我也有对象的新值,我想要旧值:/ – michael

回答

0

你的更新功能是老值可能是您没有使用Page_Load物业Page.IsPostBack

protected void Page_Load(object sender, EventArgs e) 
    { 

     if (!Page.IsPostBack) 
     { 
     // Your code.. 
     } 
    } 
+0

我的Page_Load事件是空 – michael

相关问题