2017-01-05 48 views
2

導入: 私はASP.NET Core MVCを学びたい.NETスタジオです。だから理解してください。私は自分の問題に対する答えをWebで検索しましたが、私にはうまくいく解決策が見つかりませんでした。RedirectToActionでTempDataを渡す

問題: ポストが作成され、今すぐアラートメッセージとして表示されると、自分のポスト作成メソッドからの検証メッセージをインデックスIActionmethodに渡したいと思います。私はViewBagのdosentがリダイレクトを生き延びていることをWebで読んだことがありますが、TempDataはそうしています。これはこれまでの私のコードです。

ポストメソッドを作成します。

public IActionResult CreatePost(string textContent, string headline, string type) 
    { 

     var catType = new Category() { CategoryType = type.ToUpper() }; 

     if (db.Category.Any(s => s.CategoryType.Trim().ToLower() == type.Trim().ToLower())) 
      catType = db.Category.FirstOrDefault(s => s.CategoryType.Trim().ToLower() == type.Trim().ToLower()); 


     var newPost = new Post() 
     { 
      Content = textContent, 
      Header = headline, 
      DateOfPost = DateTime.Now, 
      category = catType 

     }; 
     db.Posts.Add(newPost); 
     db.SaveChanges(); 

     TempData["validation"] = "Your post hase been publsihed"; 

     return RedirectToAction("Index"); 
    } 

インデックスメソッド:私はこのガイド試してみました

public IActionResult Index() 
     { 

     var validation = TempData["validation"]; 

      var posts = (from x in db.Posts 
         orderby x.DateOfPost descending 
         orderby x.PostID descending 
         select x); 

      return View(posts); 
     } 

ClickThisと、この1:ClickThis2が、私はこのメッセージを得た:

ErrorPage

私は知っていますgudie number 2の彼のラインは重要かもしれませんが、それをどのように適用するかは今ではありませんでした。 -

var product = TempData["myTempData"] as Product;

私がしたい最後のことは、インデックスビューに渡すが、どのように知りませんさ。私は現在、インデックスからモデルを渡しています。

これ以上見たい場合は教えてください。依存関係と同様。

私が得るすべての助けは金であり、非常に感謝します!!!

答えて

6

あなたは、セッションを設定しましたか? TempDataはバックグラウンドでセッションを使用しています。

Project.json

"Microsoft.AspNetCore.Session": "1.1.0" 

ここStartup.csファイルです。 - ConfigureServices方法

public void ConfigureServices(IServiceCollection services) 
{ 
    services.AddMemoryCache(); 
    services.AddSession(); 
    services.AddMvc(); 
} 

そしてConfigure方法。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
    app.UseSession(); 
    app.UseMvc(routes => { 
     routes.MapRoute(
      name: "default", 
      template: "{controller=Home}/{action=Index}/{id?}"); 
    }); 
} 

ここでTempDataを試してみてください。

環境変数をset ASPNETCORE_ENVIRONMENT=Developmentに設定することができます。

+0

Thaxn a lot!コンピュータに着いたら、コードを試してから、後であなたに戻ってきます。 – AllramEst

+0

それは働いた。ありがとう!!!!問題を新しい問題で更新しました。 – AllramEst

+0

私は私の他の問題を解決しました。ViewでViewBagのようなTempDataを使用することは可能ですか?今、TempDataをIndexアクションのViewBagに渡しましたか? – AllramEst

3

TempDataは、ユーザーセッションの下でデータサーバー側を格納します。セッションを有効にする必要があります(例外メッセージが示すように)。チェックthis manual

あなたがセッションを使用しない場合 - あなたは、データを格納するためのいくつかの他の方法(?クッキー)が必要

+0

Thanx !!間違いなくマニュアルをチェックします。 – AllramEst

関連する問題