在ASP.Net Core 2.1 MVC中,TempData始终为空

Si *_*Thu 4 c# tempdata asp.net-core-2.0

我想在我的.net核心mvc应用程序中使用TempData。我遵循了https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/app-state?view=aspnetcore-2.1#tempdata上的文章

我总是得到NULL这是我的代码:

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

public ActionResult Create()
{
    var abc = TempData["test"].ToString();
    return View();
}
Run Code Online (Sandbox Code Playgroud)

Art*_*ior 5

由于GDRP(https://docs.microsoft.com/zh-cn/aspnet/core/security/gdpr?view=aspnetcore-2.1),发生了类似的问题。如果您希望在不担心GDPR的情况下启动并运行它,只需禁用它即可。下面的配置还使用Cookies(默认)而不是TempData的会话状态。

启动文件

        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;
        });
Run Code Online (Sandbox Code Playgroud)

...

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseCookiePolicy(); // <- this

        app.UseAuthentication();
        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
Run Code Online (Sandbox Code Playgroud)


oth*_*.Da 4

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

在ConfigureServices方法中添加:

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

services.AddSession();
Run Code Online (Sandbox Code Playgroud)

在配置方法中你应该添加:

app.UseSession();
Run Code Online (Sandbox Code Playgroud)