2017-07-24 22 views
1

我正在使用TempData在查看頁面中傳遞成功或失敗消息。 當我第一次部署應用程序時,它工作正常,但是當服務器重新啓動/重新引導時,我在TempData中遇到了會話問題,就像下面的截圖一樣。在asp.net核心中找不到TempData密鑰

enter image description here

由於

+0

你在你的ConfigureServices中使用'services.AddDataProtection'嗎?也許這是你的問題https://github.com/aspnet/DataProtection/issues/184 –

回答

0

TempData的下一個請求完成後廢棄。這對於一次性消息很有用,比如表單驗證錯誤。這裏需要注意的重要一點是,這適用於會話中的下一個請求,以便請求可能發生在不同的瀏覽器窗口或選項卡中。

TempData通常用於paas控制器之間的值。

您應該使用ViewBagViewData將值從控制器傳遞到視圖。

ViewBag.YourKey = "Value" 
上CSHTML

@if(ViewBag.YourKey!=null) 
{ 
} 

或ViewData的

ViewData["YourKey"] = "Value" 

上CSHTML

@if(ViewData["YourKey"] !=null) 
{ 
} 

謝謝

+0

其實,沒有。 TempData通常用於傳遞一次性使用的消息信息,如「Operation Successful」或類似消息。它可以跨控制器,也可以從控制器中查看。無論如何,告訴他們使用不同的機制並不能解決問題。 –

+0

更新了答案 –

+0

仍然沒有解決問題。用一個不存在的鍵調用TempData不應該拋出這個異常,它應該返回null。 –