![](/img/trans.png)
[英]why when I don't use ConfigureHttps, TempData is null in asp.net core 2.1 MVC?
[英]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.