MVC отображать имя пользователя на странице макета - PullRequest
0 голосов
/ 23 апреля 2020

В моем приложении пользователи могут войти через сканирование штрих-кода. Сканирование запускает действие контроллера следующим образом:

function scanner(value) { 
    var badge = (value.startsWith('B-') || value.startsWith('B-')); //b- of B- = badge scan
    if (badge)
    {
        $.ajax({
            type: 'GET',
            url: '/Login/Login',
            data: {'badge': value},
            succes: function () {
                console.log("logged in");
            }
        });       
    }
    else return;
}

Действие контроллера:

    public ActionResult Login(string badge)
    {
      string userName = string.Empty;
      if (badge != null)
      { 
            int oncid;
            if (Int32.TryParse(badge.Substring(2), out oncid))
            {
                Core.Employee employee =  Data.Oracle.GetEmployee(oncid.ToString());
                if (employee != null)
                {
                    userName = employee.FirstName + ' ' + employee.Name;                    
                }
            }
            else
               userName = "invalid badge";
        }
        ViewBag.UserName = userName;
        return PartialView("_Login");
    }

в _Layout.cs html:

image

_Login.cs html сейчас имеет только @ ViewBag.UserName. Если я установлю точку останова здесь, я смогу увидеть, что ViewBag.UserName содержит правильное значение, однако в макете моей страницы ничего не отображается. Что мне здесь не хватает?

1 Ответ

0 голосов
/ 23 апреля 2020

Попробуйте использовать Session вместо ViewBag. Например:

Session["username"] = userName;

И назовите его в представлении, просто как

...