如何在登录名控件中显示用户名

我有一个母版页,其中包含基于母版页显示在所有后续页面上的loginview内容。 我有一个用户名控件也嵌套在loginview中,以显示用户登录时的名称。主页面上的loginview代码显示如下:

Welcome ! [ ] <%--Welcome: !--%> Welcome: Guest [ Log In ] <%--   [  ]  --%>

由于VS2010使用帐户文件夹中的默认登录页面启动,我认为没有必要在页面中创建单独的登录,因此我只使用了相同的登录页面。 请在下面找到登录控件的代码:

        

然后我编写了自己的身份validation代码,因为我拥有自己的数据库。 以下显示登录按钮单击事件中的代码:

  public partial class Login : System.Web.UI.Page { //create string objects string userIDStr, pwrdStr; protected void LoginButton_Click(object sender, EventArgs e) { //assign textbox items to string objects userIDStr = LoginUser.UserName.ToString(); pwrdStr = LoginUser.Password.ToString(); //SQL connection string string strConn; strConn = WebConfigurationManager.ConnectionStrings["CMSSQL3ConnectionString"].ConnectionString; SqlConnection Conn = new SqlConnection(strConn); //SqlDataSource CSMDataSource = new SqlDataSource(); // CSMDataSource.ConnectionString = ConfigurationManager.ConnectionStrings["CMSSQL3ConnectionString"].ToString(); //SQL select statement for comparison string sqlUserData; sqlUserData = "SELECT StaffID, StaffPassword, StaffFName, StaffLName, StaffType FROM Staffs"; sqlUserData += " WHERE (StaffID ='" + userIDStr + "')"; sqlUserData += " AND (StaffPassword ='" + pwrdStr + "')"; SqlCommand com = new SqlCommand(sqlUserData, Conn); SqlDataReader rdr; string usrdesc; string lname; string fname; string staffname; try { //string CurrentData; //CurrentData = (string)com.ExecuteScalar(); Conn.Open(); rdr = com.ExecuteReader(); rdr.Read(); usrdesc = (string)rdr["StaffType"]; fname = (string)rdr["StaffFName"]; lname = (string)rdr["StaffLName"]; staffname = lname.ToString() + " " + fname.ToString(); LoginUser.UserName = staffname.ToString(); rdr.Close(); if (usrdesc.ToLower() == "administrator") { Response.Redirect("~/CaseAdmin.aspx", false); } else if (usrdesc.ToLower() == "manager") { Response.Redirect("~/CaseManager.aspx", false); } else if (usrdesc.ToLower() == "investigator") { Response.Redirect("~/Investigator.aspx", false); } else { Response.Redirect("~/Default.aspx", false); } } catch(Exception ex) { string script = "alert('" + ex.Message + "');"; } finally { Conn.Close(); } } 

我的身份validation工作正常,页面被重定向到指定的目标。 但是,登录视图不显示用户名。 我实际上无法弄清楚如何将我从数据库中选择的用户名传递给要显示的登录名控件。

仔细看看我还注意到登录成功后应该显示的注销文本没有显示。 这让我想知道母版页上的登录模板控件是否会全部触发,或者它仍然是依旧显示的匿名模板控件。

我如何按预期工作? 请帮忙….

我所知道的是,Login控件被绑定到从成员资格提供程序获取数据。 但是,因为您使用自己的登录系统。 它无法获取显示数据的登录控件。

如果要允许登录控件自动显示数据,请使用“成员资格类”

http://msdn.microsoft.com/en-us/library/tw292whz.aspx

或者如果您想拥有自己的登录系统然后通过实现抽象类MembershipProvider创建自定义成员资格提供程序。 这是一个很好的资源

http://www.asp.net/general/videos/how-do-i-create-a-custom-membership-provider

另一种方法是,如果您不想使用成员资格提供程序,则在控件上手动更新用户信息。

我刚刚遇到同样的问题。 使用Forms身份validation和与OP类似的设置。

要解决此问题,我在我的应用中执行了以下操作:

 using System.Web.Security; 

然后设置LoginName:

 FormsAuthentication.SetAuthCookie(usr.Username, false); 

我在web.config中有以下内容:

        

很抱歉回复了一篇旧post但是我的搜索答案引领我到这里,直到我为自己发现它…