2012-02-24 14 views
0

に戻ると、モデルが更新されません。モデル内にモデルが設定されています。 アイテムを編集するために「編集」をクリックすると、そのアイテムはすべて機能し、TryUpdateModel()コール後にモデル内でモデルが更新されたことがはっきりとわかります。モデル番号が

ただし、インデックスにリダイレクトされても、モデルにはこれ以上変更がありません。何が起こった?

 // GET: /Contact/  
     public ActionResult Index() 
     { 
      return View(Models); 
     } 


     // GET: /Contact/Edit/5  
     public ActionResult Edit(int id) 
     { 
      var contactModel = Models.Find((x) => x.ID == id); 
      return View(contactModel); 
     } 

     [HttpPost] 
     public ActionResult Edit(int id, FormCollection collection) 
     { 
      var contactModel = Models.Find((x) => x.ID == id); 
      if (TryUpdateModel(contactModel)) 
      { 
       return RedirectToAction("Index"); 
      } 

      return View(contactModel); 

     } 

答えて

0

あなたのctorが保存されていない状態からそれをリロードされるように、私は、あなただけの編集呼び出しからメモリモデルを変更しましたが、永続的なストレージ(データベース)まで、変更を保存していないと信じています。

0

これは、モデルを永続化(DBに保存)するために使用しているものによって異なります。私の場合、同じ問題が発生しました。私のモデルセッションがHTTPリクエストにスコープされてからリダイレクトする前にUpdateまたはSaveメソッドを呼び出して、セッションがリダイレクトされていないことを確認する必要がありましたフラッシュされ、変更が保存されます。

私の場合は、nHibernateを使用していて、アクションが完了したときに変更をフラッシュしたという属性を追加してしまいました。

0

htmlヘルパーは、デフォルトでポストにModelStateを使用します。それは、リダイレクトされていないと仮定し、エラーがあったので、 '古い'値を表示する必要があります。

モデルステート(ModelState.Clear())をクリアするか、別のパターンを用意する必要があります: