ASP中的TempData始终为Null.Net Core 2.1 MVC



我想在我的.net核心mvc应用程序中使用TempData。我从https://learn.microsoft.com/en-us/aspnet/core/fundamentals/app-state?view=aspnetcore-2.1#tempdata

我总是空这是我的代码:

public async Task<ActionResult> Index(RentalsFilter filter)
{
TempData["test"] = "ABC";
return View();
}
public ActionResult Create()
{
var abc = TempData["test"].ToString();
return View();
}

由于GDRP而出现类似问题(https://learn.microsoft.com/en-us/aspnet/core/security/gdpr?view=aspnetcore-2.1(。如果你想在不担心GDPR的情况下启动并运行它,你可以禁用它。下面的配置也使用cookie(默认(,而不是TempData的会话状态。

启动.cs

services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => false;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.Configure<CookieTempDataProviderOptions>(options =>
{
options.Cookie.IsEssential = true;
});

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy(); // <- this
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});

您是否按照文档中所述配置TempData:

在ConfigureServices方法中添加:

services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddSessionStateTempDataProvider();
services.AddSession();

在配置方法中,您应该添加:

app.UseSession();

对我有效的答案(对于asp.net Core 2.2(是

in Startup.Configure() app.UseCookiePolicy(); should be after app.UseMVC();

上面有人在这个stackoverflow回答的评论中链接到了

除了

应用程序。UseSession(((在配置中(

服务。AddSession(((在ConfigureServices中(

请放置

@{TempData.Keep("test");}

在HTML文件中。它将持续到下一个请求。

最新更新