我有一個使用LINQ to Entities設置的模型,到預期的數據庫。但是,當我使用.NET 3.5時,無法使UpdateModel工作。ASP.NET MVC 2 - 「使用UpdateModel和LINQ to Entities時,無法更新類型'XYZ'的模型(.NET 3.5)
[HttpPost]
public ActionResult Edit(Site.Models.XYZ xyz)
{
try
{
var original = db.XYZ.First(u => u.id == xyz.id);
UpdateModel(original);
db.SaveChanges();
return RedirectToAction("Index");
}
catch (Exception ex)
{
return View("Error");
}
}
這將導致以下異常:
System.InvalidOperationException was caught
Message=The model of type 'Site.Models.XYZ' could not be updated.
Source=System.Web.Mvc
StackTrace:
at System.Web.Mvc.Controller.UpdateModel[TModel](TModel model, String prefix, String[] includeProperties, String[] excludeProperties, IValueProvider valueProvider)
at System.Web.Mvc.Controller.UpdateModel[TModel](TModel model, String prefix)
at Site.Controllers.XYZController.Edit(Site.Models.XYZ xyz) in D:***.cs:line 81
InnerException:
如果我UpdateModel(xyz)
不發生異常,但數據不保存任何。
如何讓UpdateModel使用此工具(無需更新到.NET 4.0),爲什麼無法更新(由於沒有內部異常,異常沒有幫助)?
我剛剛遇到同樣的問題,並且使用TryUpdate可以確定哪些屬性尚未設置,以幫助識別問題。 – 2010-12-18 14:45:57
模型聯編程序無法更新模型上的屬性時引發異常。如果您希望出現異常,就像數據不正確一樣,那麼請使用TryUpdateModel,因爲這不會引發異常。 – Chev 2011-06-21 07:19:24