2017-01-05 113 views
2

簡介: 我是一個試圖學習ASP.NET Core MVC的.NET studet。所以請理解。我已經在網上搜索了我的問題的答案,但沒有找到適合我的解決方案。傳遞TempData與RedirectToAction

問題: 無論何時創建一個帖子並且他們現在將其顯示爲警報消息,我都想將創建帖子方法中的驗證消息傳遞給索引IActionmethod。我已經在網上閱讀過ViewBag dosent存活重定向,但TempData的確如此。這是我的代碼到目前爲止。

創建POST方法:

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這一個:ClickThis2,但我得到這個消息:

ErrorPage

我知道t他的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很多!一旦我到達一臺電腦,我會嘗試一下這些代碼,然後再回到你身邊。 – AllramEst

+0

它工作。謝謝!!!!我更新了一個新問題的問題。 – AllramEst

+0

我解決了我的其他問題。在視圖中是否可以像ViewBag一樣使用TempData?現在我將TempData傳遞給Index操作中的ViewBag? – AllramEst

3

TempData存儲數據服務器端,在用戶Session下。您需要啓用會話(如異常消息所述)。檢查this manual

如果你不想使用會話 - 你需要一些其他的方式來存儲數據(Cookies嗎?)

+0

Thanx !!肯定會檢查手冊了。 – AllramEst

相關問題