2016-07-21 9 views
1

ASP.NetCore MVCコントローラでは、以下のHttpPost Createメソッドを使用して静的リスト_restaurantDataに新しいオブジェクト(Restaurant)を追加してから、新しいレストランの詳細ページにリダイレクトします。デバッグ中に、新しいレストランが_restaurantDataに追加され、適切なすべての適切なIDが割り当てられ、正しいIDがRedirectToActionメソッドに渡されることを確認できます。 'Details'が実際に呼び出されると、新しいRestaurantオブジェクトは_restaurantDataから削除され、 'model'はnullになります。どうすれば新しいレストランを "Create"のreturn文と "Details"の先頭の間のリストから削除することができますか?そして、どうすればこの問題を解決できますか?静的メンバーがHttpPostで削除されています

[HttpPost] 
    public IActionResult Create(RestuarantEditViewModel model) 
    { 
     var restaurant = new Restaurant(); 
     restaurant.Name = model.Name; 
     restaurant.Cuisine = model.Cuisine; 

     _restaurantData.Add(restaurant); 

     return RedirectToAction("Details", new { id = restaurant.Id }); 
    } 

    public IActionResult Details(int id) 
    { 
     var model = _restaurantData.Get(id); 
     if (model == null) 
     { 
      return RedirectToAction("Index"); 
     } 
     return View(model); 
    } 

ここにレストランを追加するコードを示します。

public void Add(Restaurant newRestaurant) 
    { 
     newRestaurant.Id = _restaurants.Max(r => r.Id) + 1; 
     _restaurants.Add(newRestaurant); 
    } 

答えて

0

リダイレクトすると、静的変数を含むページ(およびその基になるコントローラクラス)の状態が失われます。何をする必要があなたは新しいインスタンスを追加した後で保存される。そして、

_restaurantData.Add(restaurant); 
_restaurantData.SaveChanges(); // Assuming DbContext 

、詳細ページでページの読み込みが、データベースが保存されたモデルを持っていますし、正常に取得されますとき。

DbContextでない場合は、ページ読み込みの間にデータを保存する方法が必要です。

+0

これはDbContextではなく、私が作成したクラスです。それを考慮して私がそれを保存する方法はありますか? – user3846006

+0

ページの読み込みの間にページの状態が失われるため、データをどこかに格納する必要があります。 Entity Frameworkと 'DbContext'を見てください:https://docs.efproject.net/en/latest/ –

+0

Ok。私はTのチュートリアルに従っていたので混乱しています。ページの読み込みの間に常にページの状態が失われているのか、それとも新しいのですか? – user3846006

関連する問題