因爲我不能評論一個答案,我會通過一個新的答案做到這一點.. 我注意到你的屬性被稱爲「名字」,你有沒有嘗試做this教程? 這是您遇到問題的編輯操作?
因爲這與我和我的同班同學所面對的問題完全相同。 這是問題的更詳細的解釋:
這是控制器的動作:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Contact contactToEdit) {
if (!ModelState.IsValid)
return View();
try {
var originalContact = (from c in base._entities.ContactSet
where c.Id == contactToEdit.Id
select c).First();
base._entities.ApplyPropertyChanges(originalContact.EntityKey.EntitySetName, contactToEdit);
base._entities.SaveChanges();
return RedirectToAction("Index");
} catch(Exception e) {
return View();
}
}
當ApplyPropertyChanges被稱爲exception提高。 (InvalidOperationException異常) 異常消息:
{System.InvalidOperationException: The ObjectStateManager does not contain an ObjectStateEntry with a reference to an object of type 'ContactManager.Models.Contact'.
at System.Data.Objects.ObjectContext.ApplyPropertyChanges(String entitySetName, Object changed)
at ContactManager.Controllers.HomeController.Edit(Contact contactToEdit) in C:\Users\Jeroen\Desktop\ContactManager\ContactManager\ContactManager\Controllers\HomeController.cs:line 65}
當添加ApplyPropertyChanges之前這一行:
System.Data.Objects.ObjectStateEntry x = base._entities.ObjectStateManager.GetObjectStateEntry(originalContact);
X確實含有正確類型的一個條目。 (debug image)
注:我做了一個從教程的小偏差,並把實體對象放在一個超類,所以我不必在我所有的控制器中聲明相同的對象。但遵循教程時會出現同樣的問題。
這就是我發現的奇怪。我無法提供更多信息,因爲我不能。我可以使用<%= Html.Encode(Model.FirstName)%>但不是 <%= Model.FirstName%> – Smallville 2009-04-29 13:04:17