簡體   English   中英

在ASP.Net Core 2.1 MVC中,TempData始終為空

[英]TempData is always Null at ASP.Net Core 2.1 MVC

我想在我的.net核心mvc應用程序中使用TempData。 我按照https://docs.microsoft.com/en-us/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();
}

由於GDRP( https://docs.microsoft.com/en-us/aspnet/core/security/gdpr?view=aspnetcore-2.1 )有類似的問題。 如果你想讓它運行起來而不用擔心GDPR你就可以禁用它。 下面的配置也使用cookie(默認)而不是TempData的會話狀態。

Startup.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();

在Configure方法中,您應該添加:

app.UseSession();

對我有用的答案(對於asp.net Core 2.2)是

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

上面有哪些人在此stackoverflow答案的評論中鏈接到了

這是除了

app.UseSession()(在配置中)

services.AddSession()(在ConfigureServices中)

請放置

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

在您的HTML文件中。 它會持續下一個請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM