当用户成功登录时,我将用户名存储在tempdata中,以便我可以在我的_Layout中使用它:
TempData["username"] = model.Email.Split('@')[0];
TempData.Keep("username");
在我的_Layout上:
<li class="nav-item">
<h5 style="color:white"> Welcome, @TempData["username"]</h5>
</li>
这实际上适用于第一次加载,但是如果我转到另一个页面,tempdata将变为null并且不显示用户名。如何在_layout上保留用户名?
答案 0 :(得分:0)
Tempdata保留方法仅适用于下一个请求。如果要在所有页面中存储数据。使用MVC身份主体方法来持久保存数据整体页面。的IPrincipal
答案 1 :(得分:-1)
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>