I have a few C# questions too, but this is mainly an ASP problem I think. All the code I mention below takes place in the code-behind of my Master Page. I worry a lack of knowledge on master pages may be the problem too. Excuse the database name; my dad wants to make a site called 'Dumbassery.com' which is what I'm working on :P...
I've been working on an ASP.NET site with C# code-behind. I wanted to add some cookies for login stuff but the cookies weren't sticking around. I decided, "Fix it later, try to work around it for now." I commented out the code, rebuilt, and the code continued to run. I know this because I have 2 panels that switch visibility on correctly logging in. I've closed Visual Studio, I've taken out the code completely and rebuilt, and the code continues to run!!
Master Page C# code-behind (with the commented out sections):
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//sets banner and background according to current site properties
CurrentSiteProperty cs = (from c in new DumbasseryDatabaseDataContext().CurrentSiteProperties where c.id == 1 select c).First();
BannerImage.ImageUrl = cs.Banner.fileLocation;
bodyTag.Style.Add(HtmlTextWriterStyle.BackgroundImage, cs.BackgroundImage.fileLocation);
}
/*if (Request.Cookies["loggedIn"] != null && Request.Cookies["loggedIn"].Value == "true")
{
LoginPanel.Visible = false;
LoggedInPanel.Visible = true;
LoggedInHomeLink.Text = Request.Cookies["loggedIn"].Values.Get("userName") + " Home";// Request.Cookies["loggedIn"]["userName"] + " Home";
Response.Cookies["loggedIn"].Expires = DateTime.Now.AddDays(1);
}*/
}
protected void Login(Object o, EventArgs e)
{
/*User loginUser = (from u in new DumbasseryDatabaseDataContext().Users where u._password == PasswordTextBox.Text && u.loginName == LoginNameTextBox.Text select u).FirstOrDefault();
if (loginUser != null)
{
LoginPanel.Visible = false;
LoggedInPanel.Visible = true;
LoggedInHomeLink.Text = loginUser.displayName + " Home";
HttpCookie loggedIn = new HttpCookie("loggedIn");
loggedIn.Values.Add("userName", loginUser.displayName);
loggedIn.Value = "true";
loggedIn.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(loggedIn);
}*/
}
protected void Logout(Object o, EventArgs e)
{
/*Response.Cookies["loggedIn"].Expires = DateTime.Now;
LoginPanel.Visible = true;
LoggedInPanel.Visible = false;*/
}
A couple other issues I've had that may or may not be tied to the problem that need fixing regardless:
I mention two controls in my Page_Load above (BannerImage and bodyTag) that give the error "The name '
controlName' does not exist in the current context." Even though they're showing as errors after building, the site still runs. It's not a problem as much as it is extremely confusing why this is happening (not being able to intellisense the controls doesn't help either).
The other issue is the cookies I mentioned before. The cookie code I was playing with is the C# code commented out above. Any help on why they aren't sticking around would be extremely helpful. I could tell something was wrong with my cookies because the controls they alter (the previously mentioned panels) appear at the top of the master page as follows:
Before Logging In:
Note that the LoginPanel is visible, LoggedInPanel is not, and the HyperLink has no text.
<asp:Panel runat="server" ID="LoginPanel">
more controls
</asp:Panel>
<asp:Panel runat="server" ID="LoggedInPanel" Visible="false" >
<asp:HyperLink ID="LoggedInHomeLink" runat="server" NavigateUrl="~/Register.aspx" />
more controls
</asp:Panel>
After Logging in:
Note that the LoginPanel and LoggedInPanel successfullly change visibility and the Hyperlink text is now "
username Home".
<asp:Panel runat="server" ID="LoginPanel" Visible="false">
more controls
</asp:Panel>
<asp:Panel runat="server" ID="LoggedInPanel" Visible="true" >
<asp:HyperLink ID="LoggedInHomeLink" runat="server" NavigateUrl="~/Register.aspx" Text="username Home" />
more controls
</asp:Panel>
The very next page visited after the initial login redirection:
Note that the visibilities remained the same, but the Hyperlink text has lost the username.
<asp:Panel runat="server" ID="LoginPanel" Visible="false">
more controls
</asp:Panel>
<asp:Panel runat="server" ID="LoggedInPanel" Visible="true" >
<asp:HyperLink ID="LoggedInHomeLink" runat="server" NavigateUrl="~/Register.aspx" Text=" Home" />
more controls
</asp:Panel>
The 2nd page visited after the initial login redirection:
The page returns to how it was before login.