[英]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" />
<asp:Label ID="Label3" Text="" runat="server" CssClass="label"/>
<asp:Label ID="Label4" runat="server" Text="User" CssClass="label"></asp:Label>
</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.