如何在母版页上创建用户名

How to create username on master page

我正在尝试使用会话变量和登录用户名来更新主页顶部的标签。但是,当我从登录页面导航时,标签重置为默认值。有人可以解释热门以将其保留在页面上。如果这种显示用户名的方法是最好的?

假设您的母版页上有这样一个标签控件 <asp:Label runat="server" ID="Label1" />

所以要显示用户名,可以使用User.Identity.Name 属性将其值赋值给标签控件。请注意,如果用户未通过身份验证,空字符串将为 return。另外一个好的做法是应用 IsAutheticated 检查并可能为匿名用户显示不同的标签文本。

protected void Page_Load(object sender, EventArgs e)
{
    if (User.Identity.IsAuthenticated)
    {
        Label1.Text = User.Identity.Name; // username
    }
    else
    {
        Label1.Text = "Guest User";
    }
}

如果您使用实际的 HttpContext.Current.Session 状态变量来保存您登录时的用户名,您可以按照@woodykiddy 的建议进行操作,并在代码隐藏将 Label 控件的 Text 属性 设置为会话存储的包含用户名的 string 变量。

Label1.Text = (string)HttpContext.Current.Session[YOUR_STORED_USERNAME_SESSION_KEY];
</pre>

但是,在 Site.Master 文件的 .aspx 标记中放置一小段服务器端 C# 代码会更容易。这可以通过将 C# 代码包装在特殊标记中来完成,如下所示:

<%:HttpContext.Current.Session[YOUR_STORED_USERNAME_SESSION_KEY]%>

这样,每次呈现母版页的标记时都会执行查找存储的会话状态变量的服务器端调用,并且始终是最新的。