解決使用ASP.NET Core Identity如何在網站母版頁顯示用戶中文姓名

最近在學Aspnetcore,由於新學,加上AspNetCore不斷更新換代,碰到的問題百度查來的大多是舊答案,解決不了老問題。因爲老問題常被新的更安全更快速的方案所替代,也常常刪除或替換掉了老的解決方案。

AspNetCore有容易的地方,有易用的地方,也有高深難用的地方。

有這樣一個需求,用戶用賬號登錄,然後在網頁上顯示用戶的姓名或暱稱,也就是我要顯示DisplayName,而不是UserName。

就如標題所言,這個問題雖然最後解決起來也就加2行改動1處,但是這個答案卻不是我網上查到的,是通過不斷思索、不斷測試後的結果。

通過查詢,有3種解決方案:

1、大多推薦使用Session。對於3.1版本來說,不OK!!!我是說老的寫法是不行的,它有新方案,具體怎麼弄現在真不知道。不信的話就查一下它的方法,已經沒有了Session.SetString(),也沒有Session["Key"]取值。

2、ViewData["DisplayName"],用這個難道需要每個頁面都設置一下嗎?

3、直接用中文UserName。User.Identity.Name顯示的就是UserName,那麼我們不如直接用中文賬號好了。如何用中文賬號請參考:https://www.jianshu.com/p/5f85aab34407   雖然有點麻煩,但也就麻煩一次,也不算什麼。但真用中文賬號嗎?可以但不推薦。

其實解決起來很容易,在 _LoginPartial.cshtml 分部頁上加上兩句,改動一處,如下:

 

{
    var user = await UserManager.GetUserAsync(User);
    ViewData["displayName"] = user.DisplayName;
    <li class="nav-item">
        <a  class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Manage/Index" title="Manage">Hello @ViewData["displayName"]!</a>
    </li>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章