[英]Display Logged In Username on master page
I have MRS.master with the following: 我有以下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>
And MRS.master.cs: 和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";}
}
}
I have two pages, Page1.aspx, Page2.aspx and I added the following to each: 我有两个页面,分别为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">
I added the same code to Page2.aspx also. 我也将相同的代码添加到Page2.aspx。 Page1 is starting page.After successful login 'Label4' is displaying Username, If I navigate to Page2 'Label4' is not displaying anything and if I come back to Page1 then 'Label4' is showing nothing.
Page1是起始页。成功登录后,“ Label4”显示用户名,如果我导航到Page2,则“ Label4”未显示任何内容,如果返回到Page1,则“ Label4”未显示任何内容。
How can I display Username on all pages. 如何在所有页面上显示用户名。 I already used Session.
我已经使用了Session。
Try this in MRS.maste.ascx.cs
: 在
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>
replace your Page_Load
event in MRS.master.cs to 将MRS.master.cs中的
Page_Load
事件替换为
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
Label4.Text = (string)(Session["New"]);;
}
}
ViewState for labels controls is not enabled by default, so on page load of your master page you have to assign his value every time you do a postback 标签控件的ViewState默认情况下未启用,因此在母版页加载时,每次执行回发时都必须分配其值
if ( null != Session["New"] )
Label4.Text = Session["New"] .ToString();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.