回答にはコメントできませんので、新しい回答で回答します。 あなたの属性は「FirstName」と呼ばれていますが、thisチュートリアルを実行しようとしていますか? これは問題がある編集アクションですか?
これはまったく同じ問題で、私のクラスメートの2人が持っているので。
[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}
IはApplyPropertyChanges前に、この行を追加します。
System.Data.Objects.ObjectStateEntry x = base._entities.ObjectStateManager.GetObjectStateEntry(originalContact);
xが正しいタイプのエントリが含まれません。 (debug image)
注:チュートリアルから少しずれて、エンティティオブジェクトをスーパークラスに入れて、すべてのコントローラで同じオブジェクトを宣言する必要はありません。しかし、チュートリアルの後に同じ問題が発生します。
これは私が奇妙に感じたものです。私はもっと情報を与えることはできません、私はすることはできません。私は<%= Html.Encode(Model.FirstName)%>を使用することができますが、 <%= Model.FirstName%> – Smallville
ではありません。なぜそうなのかわかりません。モデル? –