使用 RedirectToAction 傳遞 TempData
簡介:我是一名 .NET 學生,正在嘗試學習 ASP.NET Core MVC。所以請諒解。我在網上搜尋了我的問題的答案,但還沒有找到適合我的解決方案。
問題:每當創建文章時,我想將驗證消息從我的 create post 方法傳遞給索引 IActionmethod,並且它們現在將其顯示為警報消息。我在網上讀到 ViewBag 不會在重定向中倖存,但 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和這個:ClickThis2但我收到了這條消息:
我知道來自 gudie 2 號的這條線可能很重要,但現在不知道如何應用它。-
var product = TempData["myTempData"] as Product;我想做的最後一件事是將它傳遞給索引視圖,但不知道如何。我目前正在從索引中傳遞一個模型。
告訴我您是否還想看什麼。比如依賴。
我得到的所有幫助都是金子,將不勝感激!!!
您是否配置了會話?TempData 在幕後使用會話。
項目.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環境變數設置環境。
我在Google搜尋“asp.net core redirect to action tempdata”時遇到了這個問題。我找到了答案,並將其發佈在這里以供後代使用。
問題
我的問題是,在填寫一些
TempData值並呼叫之後RedirectToAction(),TempData我重定向到的頁面上將是空的。解決方案
根據 HamedH 的回答:如果您正在執行 ASP.NET Core 2.1,請打開您的 Startup.cs 文件並確保您的
Configure()方法app.UseCookiePolicy();中的app.UseMVC();.例子:
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { ... app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); } app.UseCookiePolicy(); }
