我正在使用ASP.NET/C#
。
我目前正在使用Session
显示登录用户的名字和中间名。
这是代码
HTML:
<li><a href="#"><%=Session["UserFName"]%> <%=Session["UserMName"]%>▼</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
做我想做的事情可以吗?
许多人为实现这一目标还有哪些其他方法?
欢迎任何建议。
答案 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%> <%=UserMName%>▼</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();