在ASP.NET中的菜单上显示用户名的正确方法

时间:2012-07-27 07:55:31

标签: c# asp.net session

我正在使用ASP.NET/C#

我目前正在使用Session显示登录用户的名字和中间名。

这是代码

HTML:

<li><a href="#"><%=Session["UserFName"]%>&nbsp;<%=Session["UserMName"]%>&#9660;</a>

代码背后:

//Call the function which returns User's Name
var userName = userBLL.GetUserName(HttpContext.Current.User.Identity.Name);
if (userName != null)
{
Session["UserFName"] = userName.FirstName;
Session["UserMName"] = userName.MiddleName; 
}

以下是GetUserName函数

public Users_AdditionalInfo GetUserName(string userCode)
{
using (var db = new DataClasses1DataContext())
{
var userName = db.Users_AdditionalInfos.Where(user => user.UserCode.Equals(userCode)).SingleOrDefault();
return userName; 
}

}

使用Session variables做我想做的事情可以吗?

许多人为实现这一目标还有哪些其他方法?

欢迎任何建议。

4 个答案:

答案 0 :(得分:1)

您可以尝试使用ViewState,因为您需要在菜单页面上显示值(您不需要在另一页面中)

ViewState["UserFName"] = userName.FirstName;
ViewState["UserMName"] = userName.MiddleName; 

Or with InputHidden

答案 1 :(得分:1)

你刚提到ASP.NET,而不是MVC。你在使用MVC吗?

如果没有,为什么不在Literal内放置<li>控件并在页面加载时填充

在你的aspx中是这样的:

<li><a href ="#"><asp:Literal ID="lt_name" EnableViewState="false" 
 runat="server" Text=""></asp:Literal></a> 

在页面加载中,您可以:

var userName = userBLL.GetUserName(HttpContext.Current.User.Identity.Name);  

lt_name.text = userName.Firstname + " " + username.Lastname;

答案 2 :(得分:1)

在您的代码隐藏课程中

public string UserFName = "";
public string UserMName = "";

您指定的代码:

//Call the function which returns User's Name
var userName = userBLL.GetUserName(HttpContext.Current.User.Identity.Name);
if (userName != null)
{
this.UserFName = userName.FirstName;
this.UserMName = userName.MiddleName; 
}

最后是在aspx代码中:

<li><a href="#"><%=UserFName%>&nbsp;<%=UserMName%>&#9660;</a>

请记住,如果用户名中允许使用特殊的html字符,则需要在将这些字符打印出来之前将其删除。

答案 3 :(得分:0)

在您的aspx页面或网站母版页中只需添加一个标签,如..

    <asp:Label ID="lblLoggedUser" runat="server" Font-Names="Verdana" Enabled="false"
                        ForeColor="Blue" Font-Size="13px"></asp:Label>

最适合从登录页面获取登录用户值会话。

Session["USER"] =txtusername.text;

和您的sitemaster.cs页面的page_load

 lblLoggedUser.text= Session["USER"].tostring();