簡體   English   中英

在主頁上顯示已登錄的用戶名

[英]Display Logged In Username on master page

我有以下MRS.master:

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MRS.master.cs" Inherits="MRS" %>
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">

        <div id="top2" class="top2">
            <a href="Page1.aspx" class="mainlist">Page1</a>
            <a href="Page2.aspx" class="mainlist" ></a>
        </div>
        <div id="top3" class="top3">
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager> 
            <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
            <ContentTemplate>
                <asp:Button ID="Register" runat="server" Text="Register" OnClick="Register_Click"/>
                <asp:Label ID="uname" Text="UserName" runat="server" CssClass="label"></asp:Label>
                <asp:TextBox ID="UserName" runat="server"></asp:TextBox>
                <asp:Label ID="Pwd" Text="Password" CssClass="label" runat="server"></asp:Label>
                <asp:TextBox ID="password" runat="server" textmode="Password"></asp:TextBox>
                <asp:Button ID="Login" runat="server" Text="Login" OnClick="Login_Click" />
                  &nbsp;<asp:Label ID="Label3" Text="" runat="server" CssClass="label"/>
                &nbsp;&nbsp;&nbsp;
               <asp:Label ID="Label4" runat="server" Text="User" CssClass="label"></asp:Label>&nbsp;&nbsp;&nbsp;
              </ContentTemplate>
        </asp:UpdatePanel>
      </div>
<div id="down" class="down" style="color:wheat">
        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">

          </asp:ContentPlaceHolder>                             
        </div>

</form>
    </body>
    </html>

和MRS.master.cs:

string username = null;
    protected void Page_Load(object sender, EventArgs e)
        {
          Label4.Text = (string)(Session["New"]);;
        }
    protected void Login_Click(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection("Server=004-PC\\SQLEXPRESS;Database=MRS;User Id=sa;Password=***");
            con.Open();
            SqlCommand cmd1 = new SqlCommand("select count(*) from LoginDetails where Uname='" + UserName.Text + "'", con);
            int cnt = Convert.ToInt32(cmd1.ExecuteScalar().ToString());
            con.Close();
            if (cnt == 0) {
                Label3.Text = "User does not exist.";
            }
            else
            {
                con.Open();
                SqlCommand cmd2 = new SqlCommand("select Password from LoginDetails where Uname='" + UserName.Text + "'", con);
                string pwd = cmd2.ExecuteScalar().ToString();
                con.Close();
                if (pwd == password.Text)
                {
                    username = UserName.Text;             
                    Session["New"] = username;
                    Label4.Text = UserName.Text;                   
                }
                else{Label3.Text = "Login details are wrong";}
            }
        }

我有兩個頁面,分別為Page1.aspx,Page2.aspx,並在每個頁面中添加了以下內容:

<%@ Page Language="C#" MasterPageFile="~/MRS.master" AutoEventWireup="true" CodeFile="Page1.aspx.cs" Inherits="Page1" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">

我也將相同的代碼添加到Page2.aspx。 Page1是起始頁。成功登錄后,“ Label4”顯示用戶名,如果我導航到Page2,則“ Label4”未顯示任何內容,如果返回到Page1,則“ Label4”未顯示任何內容。

如何在所有頁面上顯示用戶名。 我已經使用了Session。

MRS.maste.ascx.cs嘗試以下MRS.maste.ascx.cs

protected void Page_Load(object sender, EventArgs e)
{
  if(!Page.IsPostBack)
  {
    if (Session["New"] != null)
       Label4.Text = Session["New"].ToString();
  }
}

為什么不直接在Label.Text使用會話變量?

<asp:Label ID="Label4" runat="server" Text='<%= Session["New"] %>' CssClass="label"></asp:Label>

將MRS.master.cs中的Page_Load事件替換為

    protected void Page_Load(object sender, EventArgs e)
    {
       if(!Page.IsPostBack)
       {
          Label4.Text = (string)(Session["New"]);;
       }
    }

標簽控件的ViewState默認情況下未啟用,因此在母版頁加載時,每次執行回發時都必須分配其值

if ( null != Session["New"] )
  Label4.Text = Session["New"] .ToString();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM