首页 > 解决方案 > 浏览器刷新时如何保留 TempData 但如果用户离开页面则为空

问题描述

如果浏览器或页面刷新但如果用户离开到另一个页面然后返回则为空或重置是否仍然保留 TempDate。

我可以使用 TempData.Keep() 保留 TempData 但如果用户转到另一个页面并返回,我想重置它。

var projectId= TempData["projectId"];
    TempData.Keep("projectId");

标签: javascriptc#asp.netasp.net-mvcasp.net-core

解决方案


TempData 旨在仅在当前请求和下一个请求之间具有生命周期。您必须在每次请求时重新存储它(或调用 .Keep())以使其在后续请求中可用。您最好使用 Session 对象或从您的用户身份中检索它。

但是,如果您在调用 .Keep() 之后调用它(显示调用计数),您可以“保留”您的 TempData 对象。

<li class="nav-item">                   
     <h5 style="color:white"> Welcome, @TempData["username"]</h5>
     @TempData.Keep("username")
</li>

另一种规避此问题的方法是使用 .Peek():

<li class="nav-item">                   
     <h5 style="color:white"> Welcome, @TempData.Peek("username").ToString()</h5>
</li>

推荐阅读