[MVC在布局页面上显示用户名

问题描述 投票:0回答:1

在我的应用中,用户可以通过条形码扫描登录。扫描触发控制器动作,如下所示:

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.cshtml中:

<nav class="navbar fixed-top navbar-expand-sm navbar-dark bg-dark">
    <div class="container">
        <a class="navbar-brand" href="#"><img src="~/Content/Images/logo.png" height="36" width="36" class="d-inline-block align-top">&nbsp; App Name</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button>
        <div class="collapse navbar-collapse" id="navbarNav">
            <ul class="navbar-nav ml-auto mt-2 mt-lg-0">
                <li class="nav-item active">
                    @*<a class="nav-link" href="@Url.Action("Index", "Home")">Home <span class="sr-only">(current)</span></a>*@
                    <a class="nav-link" href="@Url.Action("Index", "Home")"><span class="fas fa-home fa-2x" aria-hidden="true"></span></a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" id="smrButton" href="#">SMR</a>
                </li>
            </ul>
        </div>
        @Html.Partial("_Login")
    </div>
</nav>

_ Login.cshtml现在只有@ ViewBag.UserName。如果在此处设置断点,则可以看到ViewBag.UserName保持正确的值,但是,页面布局中什么也没有显示。我在这里想念什么?

model-view-controller partial viewbag
1个回答
0
投票

[尝试使用会话代替ViewBag。例如:

Session["username"] = userName;

然后在视图中调用它,就这么简单

© www.soinside.com 2019 - 2024. All rights reserved.