如何在MVC的布局页面中显示会话中的用户名?

卡兰·帕特尔

我正在制作mvc项目,并在布局页面中显示会话变量中的用户名。如果会话变量为null,则它将显示登录链接。参见下面的代码。

_Layout.cshtml

@if (HttpContext.Current.Session["UserId"].ToString() != null && HttpContext.Current.Session["UserId"].ToString() != "")
{
    using (Html.BeginForm("LogOff", "Home", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))
    {
        <ul class="nav navbar-nav navbar-right">
            <li>
                <p><b>@Session["UserName"]</b></p>
            </li>
            <li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li>
        </ul>
    }
}
else
{
    <ul class="nav navbar-nav navbar-right">
        <li>@Html.ActionLink("Register", "Register", "Home", routeValues: null, htmlAttributes: new { id = "registerLink" })</li>
        <li>@Html.ActionLink("Log in", "Login", "Home", routeValues: null, htmlAttributes: new { id = "loginLink" })</li>
    </ul>
}

我在登录操作中设置了会话,如下所示。

控制器动作

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Login(LoginViewModel login)
    {
        User user = new User();
        user = db.Users.Where(x => x.UserName == login.UserName && x.Password == login.Password).FirstOrDefault();

        if(user != null)
        {
            Session["UserName"] = user.UserName;
            Session["UserId"] = user.UserName;
            return RedirectToAction("Index");
        }
        else
        {
            return View(login);
        }
    }

但我得到对象引用未设置为对象的实例。错误,请参阅所附图片。

对象引用错误

威克多(Wiktor Zychla)

这个

@if (HttpContext.Current.Session["UserId"].ToString() != null && 
     HttpContext.Current.Session["UserId"].ToString() != "")

应该替换为

@if (HttpContext.Current.Session["UserId"] != null &&
...

您的代码中的问题是.ToString()只能在非null引用上调用,并且您的代码目前无法阻止这种情况。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在会话中定义索引“用户名”?

如何使用flask在多个页面中显示用户名?

如何在本地保存用户名并将其显示在每个页面中

如何在套件crm中显示用户名

如何在菜单中显示用户名

如何在 React Native 中显示 Facebook 用户名?

如何在codeigniter中登录后显示用户名

WPF在文本中显示会话用户名

Laravel 5.2身份验证-如何在每个页面中显示登录用户名和注销链接?

如何从会话ID中查找用户名?

标签在 MVC 中不显示用户名

如何在 URL Flask 中显示当前用户的用户名

如何从 Laravel 中的关系表中显示用户名

如何在Blazor WebAssembly的Razor页面中获取当前用户名?

如何在登录页面中更详细地说明登录错误(“用户名/密码错误”)

如何在提款时登录的管理页面中添加用户名?

如何在Bash中获取当前用户的用户名?

如何在laravel中通过用户名查找用户?

如何在MVC的global.asax文件中获取用户名

如何在Spring MVC REST通道中获取登录的用户名/主体?

如何在C#MVC中从CAS服务器检索用户名

如何在C#的消息框中显示用户名?

Laravel 5.3如何在通知电子邮件中显示用户名

如何在十月厘米的列表中显示用户名而不是ID

如何在产品表中显示用户名?API laravel 8 使用 eloquent

如何在RUBY中显示当前用户名作为链接?

如何在 laravel 和 vue.js 中显示用户名而不是 id(外键)

如何在不刷新页面的情况下显示/呈现存储在外部模型中的用户名?

如何在python中获取sudo用户名?