我正在尝试使用带有登录用户名的会话变量来更新标签顶部的主页面。但是,当我从登录页面导航时,标签重置为默认值。有人可以解释热,以保持在页面上。如果这种显示用户名的方法最好?
答案 0 :(得分:1)
如果您使用实际的HttpContext.Current.Session
状态变量来保存登录信息中的用户名,则可以执行@woodykiddy建议并拥有母版页{{1}代码隐藏中的方法将Page_Load()
控件的Text
属性设置为包含用户名的会话存储Label
变量。
string
但是,在Label1.Text = (string)HttpContext.Current.Session[YOUR_STORED_USERNAME_SESSION_KEY];
文件的.aspx
标记中放置一小部分服务器端C#代码会更容易。这可以通过将C#代码包装在特殊标签中来完成,如下所示:
Site.Master
这样,每次呈现母版页的标记时,都会进行服务器端调用以查找存储的会话状态变量。
答案 1 :(得分:0)
假设您的母版页上有一个像<asp:Label runat="server" ID="Label1" />
这样的标签控件。
因此,要显示用户名,可以使用User.Identity.Name
属性将其值分配给标签控件。请注意,如果用户未经过身份验证,则会返回空字符串。另一个好的做法是应用IsAutheticated
检查,并可能为匿名用户显示不同的标签文本。
protected void Page_Load(object sender, EventArgs e)
{
if (User.Identity.IsAuthenticated)
{
Label1.Text = User.Identity.Name; // username
}
else
{
Label1.Text = "Guest User";
}
}