如何使用mvc将基于user_ID的user_name从登录页面传递到主页

How to pass user_name based on the user_ID from login page to home page using mvc

当我登录我的登录页面时,它会转到主页,我的 user name 它工作正常,我希望 userID 基于我的 user_name 从登录到主页

<section id="login">
                                @if (Request.IsAuthenticated)
                                {
                                    <text>
                                        <button class="dropdown-toggle" id="dd-user-menu" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                                             <img src="~/img/avatar-2-64.png" alt="">
                                        </button>
                                        <div class="dropdown-menu dropdown-menu-right" aria-labelledby="dd-user-menu">
                                            <a class="dropdown-item"><span class="font-icon glyphicon glyphicon-user"></span>Hello, @User.Identity.Name</a>
                                            <a class="dropdown-item" href="#"><span class="font-icon glyphicon glyphicon-cog"></span>Settings</a>
                                            <a class="dropdown-item" href="#"><span class="font-icon glyphicon glyphicon-question-sign"></span>Help</a>
                                            <div class="dropdown-divider"></div>
                                            @using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm" }))
                                            {
                                                @Html.AntiForgeryToken()
                                                <a class="dropdown-item" href="javascript:document.getElementById('logoutForm').submit()"><span class="font-icon glyphicon glyphicon-log-out"></span>Logout</a>
                                            }
                                        </div>
                                    </text>
                                }
                            </section>

但是在我上面的代码中我得到 user_name 所以我也想得到 user_id

[HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public ActionResult Login(Login login)
        {
            if (ModelState.IsValid)
            {
                bool success = WebSecurity.Login(login.UserName, login.Password, false);
                var UserID = GetUserID_By_UserName(login.UserName);
                var DocID = GetDocID_By_UserName(login.UserName);

                if (success == true)
                {
                    Session["Name"] = login.UserName;
                    Session["UserID"] = UserID;
                    Session["RefID"] = DocID;
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    ModelState.AddModelError("Error", "Please enter valid Username and Password");
                    return View(login);
                }

            }
            return View(login);
        }
        #endregion

in my above code i get user_name so i want to get user_id as well

您不能拨打 User.Identity.XXX。您不能将自定义 属性 添加到原则 class。

但是,您可以在视图中调用 Session["UserID"],因为您已经将 UserID 存储在会话状态中。

例如,

<div>@Convert.ToInt32(Session["UserID"] ?? 0)</div>