问题描述: 在Asp.Net Core中,使用TempData和RedirectToAction时发现它们不起作用。
解决方法:
public void ConfigureServices(IServiceCollection services)
{
// other services
services.AddMvc().AddSessionStateTempDataProvider();
services.AddSession();
}
public class HomeController : Controller
{
public IActionResult Index()
{
TempData["Message"] = "Hello, TempData!";
return RedirectToAction("About");
}
public IActionResult About()
{
ViewData["Message"] = TempData["Message"];
return View();
}
}
@ViewData["Message"]
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// other configurations
app.UseSession();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
这样,当访问HomeController的Index方法时,TempData中的值会被保存,然后重定向到About方法,在About视图中可以通过ViewData["Message"]获取TempData中的值,并在视图中显示出来。
请注意,TempData的值只在当前请求和下一个请求之间有效,一旦被读取,就会被删除。因此,在About视图中读取TempData后,再次刷新视图将不会显示TempData的值。
希望以上解决方法对您有帮助!