2011-05-22 85 views
1

我正在使用Telerik的MVC網格編輯MVC3中的一些記錄,使用剃刀視圖。TryUpdateModel - 類型的模型無法更新

我所說的控制器上的編輯使用下面的代碼:

public ActionResult _CategoriesUpdate(int id) 
    { 
     WR_TakeAway_Menu_Categories category = db.WR_TakeAway_Menu_Categories.Where(c => c.ID == id).Single(); 
     TryUpdateModel(category);    
     db.ApplyCurrentValues(category.EntityKey.EntitySetName, category); 

     db.ObjectStateManager.ChangeObjectState(category, EntityState.Modified); 
     db.SaveChanges(); 

儘管這將更新塞雷爾語中的記錄,它使電網在編輯模式下,因爲它無法更新的所有屬性「類別」。

如果我改變TryUpdateModel到的UpdateModel,它拋出一個錯誤說「類型WR_TakeAway_Menu_Categories的模型無法更新」

是否有這樣做的更好的方法,或某種方式,讓TryUpdateModel返回true,以允許網格返回到顯示模式?

回答

2

沒有看到你的WR_TakeAway_Menu_Categories類,我會假設你有一些其他類作爲你的WR_TakeAway_Menu_Categories類的屬性。

如果是這種情況,您需要從TryUpdateModel方法中排除自定義對象,然後手動設置這些自定義對象。

例如:

db.Entry(category).Reference(c => c.CreatedByUser).CurrentValue = CreatedByUser; 
db.Entry(category).Reference(c => c.LastUpdateByUser).CurrentValue = LastUpdateByUser; 

這將設置你的「自定義對象」變量最新的值。我注意到,在某些情況下,如果你不這樣做,而只是明確地設置屬性,那麼數據庫記錄不會總是被更新。

手動更新自定義屬性後,請調用TryUpdateModel,不包括手動設置的屬性。

TryUpdateModel<WR_TakeAway_Menu_Categories>(category, null, null, new[] { "CreatedByUser", "LastUpdateByUser" });