Как мне получить @ ViewBag.UserName из контроллера на страницу _layout? - PullRequest
0 голосов
/ 21 июня 2019

Как я могу использовать @ ViewBag.UserName, которое я определил в своем контроллере, для отображения на моей странице _layout?Вот код с контроллера:

                       var username = User.Identity.Name;

                using (var context = new PrincipalContext(ContextType.Domain, "domain.local"))
                {
                    var user = UserPrincipal.FindByIdentity(context, username);
                    DirectoryEntry directoryEntry = user.GetUnderlyingObject() as DirectoryEntry;
                    if (user != null)
                    {
                        ViewBag.UserName = user.Name;
                        ViewBag.EmailAddress = user.EmailAddress;
                    }
                }            

Ответы [ 2 ]

1 голос
/ 21 июня 2019

Обратите внимание, что жизнь ViewBag длится только во время текущего запроса HTTP .ViewBag значения будут нулевыми, если произойдет перенаправление.

Вы должны хранить информацию о пользователе в переменной Session.

if (user != null)
{
    Session["UserName"] = user.Name;
    Session["EmailAddress"] = user.EmailAddress;
}

в layout.cshtml

<p>@Session["UserName"]</p>
0 голосов
/ 21 июня 2019

Данные Viewbag не будут отображаться на странице _layout. Если это просто представление, отображаемое один раз, вы можете использовать TempData, но с общими представлениями Tempdata будет отображаться только для первого просмотра. Таким образом, вы должны использовать Session varaible для хранения пользовательских данных и отображения их в общем представлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...