user366312
user366312

Reputation: 16938

asp.net spooky page load

Among other, I have two pages in my Web Site project. Default.aspx and TeacherControlPanel.aspx.

User gives his credentials in Default.aspx, a cookie is created And then he is Server.Transfer()ed to TeacherControlPanel.aspx.

TeacherControlPanel.aspx has a logout-button and another button named 'Send Mail'.

If the user presses the logout-button, the cookie is deleted and he is redirected to Default.aspx.

If the user closes the browser without logging out, when he opens the Default.aspx page, he is automatically redirected to TeacherControlPanel.aspx coz the cookie is there.

Now, everything is working fine except I am pressing a 'Send Mail' button on TeacherControlPanel.aspx then Default.aspx is being loaded and then TeacherControlPanel.aspx is loaded but Button event handler is not being executed.

Why Default.aspx is loading again and what is happening to Button event?

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">

    <table>
        <tr>
        <td><asp:HyperLink ID="homePageHyperlink" runat="server" NavigateUrl="~/Default.aspx">Home</asp:HyperLink></td>        
        <td rowspan="5">&nbsp;<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
        </asp:contentplaceholder></td>
        </tr>
        <tr>
        <td><asp:HyperLink ID="studentControlPanelHyperlink" runat="server">Student</asp:HyperLink></td>        
        </tr>
        <tr>
        <td></td>        
        </tr>
        <tr>
        <td></td>  
        </tr>
        <tr>
        <td></td>   
        </tr>
    </table>    
    </form>
</body>
</html>


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class MasterPage : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string st = "";
    }
}


<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <table style="width: 253px; height: 118px">
        <tr>
            <td style="width: 54px">
            </td>
            <td colspan="2">
            </td>
        </tr>
        <tr>
            <td align="right" style="width: 54px">
                <asp:Label ID="Label1" runat="server" Text="Username :"></asp:Label></td>
            <td colspan="2">
                <asp:TextBox ID="usernameTextBox" runat="server"></asp:TextBox></td>
        </tr>
        <tr>
            <td style="width: 54px">
                <asp:Label ID="Label2" runat="server" Text="Passord  :"></asp:Label></td>
            <td colspan="2">
                <asp:TextBox ID="passwordTextBox" runat="server"></asp:TextBox></td>
        </tr>
        <tr>
            <td style="width: 54px">
            </td>
            <td colspan="2">
                <asp:Button ID="btnLogin" runat="server" OnClick="btnLogin_Click" Text="Login" /></td>
        </tr>
        <tr>
            <td colspan="3">
                <asp:Label ID="labLoginMessage" runat="server" Font-Bold="True" Font-Names="Verdana"
                    Font-Size="Small" ForeColor="#C00000" Text="Label" Width="226px"></asp:Label></td>
        </tr>
    </table>
</asp:Content>

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using Ice_Web_Portal.BO;
using Ice_Web_Portal.ASP.NET.Utils;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        AspNetUtil util = new AspNetUtil(this);

        util.DisposeCookie("user");

        UserTypeEnum userType = EnumUtility.ConvertToEnum(util.GetCookieValue("user", "usertype"));
        string username = util.GetCookieValue("user", "username");

        if (userType == UserTypeEnum.Student)
        {
            Server.Transfer("~/Student/StudentControlPanel.aspx?username=" + username);
        }
        else if (userType == UserTypeEnum.Teacher)
        {
            Server.Transfer("~/Teacher/TeacherControlPanel.aspx?username=" + username);
        }
    }

    protected void btnLogin_Click(object sender, EventArgs e)
    {
        string username = this.usernameTextBox.Text;
        string password = this.passwordTextBox.Text;

        bool success = Ice_Web_Portal.BO.User.LogIn(username, password);

        if (success)
        {
            Ice_Web_Portal.BO.User user = Ice_Web_Portal.BO.User.GetUserByUserName(username);

            Ice_Web_Portal.BO.UserTypeEnum loginUserType = user.UserTypeEnum;

            if (loginUserType == UserTypeEnum.Student)
            {
                AspNetUtil util = new AspNetUtil(this);
                util.SaveInCookie("user", "username", username, 3600);
                util.SaveInCookie("user", "usertype", "Student", 3600);

                Server.Transfer("~/Student/StudentControlPanel.aspx?username=" + username);
            }
            else if (loginUserType == UserTypeEnum.Teacher)
            {
                AspNetUtil util = new AspNetUtil(this);
                util.SaveInCookie("user", "username", username, 3600);
                util.SaveInCookie("user", "usertype", "Teacher", 3600);

                Server.Transfer("~/Teacher/TeacherControlPanel.aspx?username=" + username);                
            }
            else
            {
                labLoginMessage.Text = "Sorry! Type of user couldn't be determined!";
            }
        }
        else
        {
            labLoginMessage.Text = Ice_Web_Portal.BO.User.LoginMessage;
        }
    }
}

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="TeacherControlPanel.aspx.cs" Inherits="Teacher_TeacherControlPanel" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <table style="width: 346px">
        <tr>
            <td>
                <asp:Label ID="labErrorMessage" runat="server" Font-Bold="True" Font-Names="Verdana"
                    Font-Size="Small" ForeColor="#C00000" Text="Error Message"></asp:Label></td>
            <td>
                </td>
            <td>
                </td>
            <td>
                </td>
        </tr>
        <tr>
            <td>
                Teacher Control Panel</td>
            <td>
                Mails</td>
            <td>
                Notices</td>
            <td>
                Uploads</td>
        </tr>
        <tr>
            <td rowspan="3">
                <table style="width: 134px">
                    <tr>
                        <td>
                            Username:</td>
                        <td>
                            <asp:Label ID="labUsername" runat="server" Text="labUsername"></asp:Label></td>
                        <td>
                            Teacher Code:
                        </td>
                        <td style="width: 3px">
                            <asp:Label ID="labTeacherCode" runat="server" Text="labTeacherCode"></asp:Label></td>

                    </tr>
                    <tr>
                        <td>
                            Name :</td>
                        <td>
                            <asp:Label ID="labName" runat="server" Text="labName"></asp:Label></td>
                        <td>
                            Department</td>
                        <td style="width: 3px">
                            <asp:Label ID="labDepartment" runat="server" Text="labDepartment"></asp:Label></td>
                    </tr>
                    <tr>
                        <td>
                        </td>
                        <td>
                        </td>
                        <td>
                        </td>
                        <td style="width: 3px">
                        </td>
                    </tr>
                    <tr>
                        <td>
                        </td>
                        <td>
                        </td>
                        <td>
                        </td>
                        <td style="width: 3px">
                        </td>
                    </tr>
                </table>
            </td>
            <td>
                <asp:Button ID="btnSendMail" runat="server" Height="24px" Text="Send Mail" Width="130px" OnClick="btnSendMail_Click" PostBackUrl="~/Teacher/TeacherControlPanel.aspx" /></td>
            <td>
                <asp:Button ID="btnSubmitNewNotice" runat="server" Height="24px" Text="Submit New Notice"
                    Width="130px" /></td>
            <td>
                <asp:Button ID="btnViewUploads" runat="server" Height="24px" Text="ViewUploads" Width="130px" /></td>
        </tr>
        <tr>
            <td>
                <asp:Button ID="btnViewOldMails" runat="server" Text="View Old Mails" OnClick="btnViewOldMails_Click" /></td>
            <td>
                <asp:Button ID="btnViewOldNotices" runat="server" Height="24px" Text="View Old Notices"
                    Width="130px" /></td>
            <td>
                <asp:Button ID="btnViewDefaulters" runat="server" Height="24px" Text="View Defaulters"
                    Width="130px" /></td>
        </tr>
        <tr>
            <td>
                <asp:Button ID="btnReceivedMails" runat="server" Height="24px" Text="Received Mails"
                    Width="130px" /></td>
            <td>
            </td>
            <td>
            </td>
        </tr>
        <tr>
            <td colspan="4" rowspan="1">
                <asp:GridView ID="UploadsGridView1" runat="server">
                </asp:GridView>
            </td>
        </tr>
    </table>
</asp:Content>

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using Ice_Web_Portal.ASP.NET.Utils;
using Ice_Web_Portal.BO;

public partial class Teacher_TeacherControlPanel : System.Web.UI.Page
{
    string username = string.Empty;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            username = (string)Request.QueryString["username"];

            Teacher teacher = Teacher.GetTeacherByUsername(username);

            if (teacher != null)
            {
                labUsername.Text = username;
                labName.Text = teacher.TeacherName;
                labTeacherCode.Text = teacher.TeacherCode;

                Dept dept = teacher.Department;

                if (dept != null)
                {
                    labDepartment.Text = dept.DeptName;
                }
            }
            else
            {
                labErrorMessage.Text = "No teacher found";
            }
        }
    }

    protected void btnSendMail_Click(object sender, EventArgs e)
    {
        //try
        {
            Server.Transfer(@"~/Teacher/TeacherSendMail.aspx?username=" + username);
            //Response.Redirect(@"~/Student/StudentSendMail.aspx?username=" + username);
        }
        //catch (Exception ex)
        {
            string m;
        }
    }

    protected void btnViewOldMails_Click(object sender, EventArgs e)
    {
        //try
        {
            Server.Transfer(@"~/Teacher/TeacherOldMail.aspx?username=" + username);
            //Response.Redirect(@"~/Student/StudentSendMail.aspx?username=" + username);
        }
        //catch (Exception ex)
        {
            string m;
        }
    }
}

Upvotes: 0

Views: 290

Answers (3)

Jeremy Bade
Jeremy Bade

Reputation: 511

Does "Send Mail" work correctly if you login through default but don't close the browser? My assumption is Server.Transfer is the problem. Default is receiving the event and then transferring control to TeacherControlPanel but not passing the event.

So, like Henk said try Redirect.

Upvotes: 0

Henk
Henk

Reputation: 704

Does this also happen when you use Response.Redirect instead of Server.Transfer? What URL are you seeing in the browser address bar after the Server.Transfer?

Upvotes: 3

user1921
user1921

Reputation:

What's your form/button event doing? Sounds like you have code executing on PostBack but without seeing the code it's hard to say.

Upvotes: 0

Related Questions