2009-08-17 8 views
0

Entre autres, j'ai deux pages dans mon projet de site Web. Default.aspx et TeacherControlPanel.aspx. L'utilisateur donne ses informations d'identification dans Default.aspx, un cookie est créé, puis il est Server.Transfer() ed à TeacherControlPanel.aspx. TeacherControlPanel.aspx possède un bouton de déconnexion et un autre bouton nommé 'Envoyer un courrier'.asp.net spooky chargement de la page

Si l'utilisateur appuie sur le bouton de déconnexion, le cookie est supprimé et il est redirigé vers Default.aspx.

Si l'utilisateur ferme le navigateur sans se déconnecter, lorsqu'il ouvre la page Default.aspx, il est automatiquement redirigé vers TeacherControlPanel.aspx car le cookie est présent.

Maintenant, tout fonctionne correctement, sauf que j'appuie sur un bouton 'Send Mail' sur TeacherControlPanel.aspx puis que Default.aspx est chargé et que TeacherControlPanel.aspx est chargé mais que le gestionnaire d'événements Button n'est pas en cours d'exécution.

Pourquoi Default.aspx se charge à nouveau et qu'arrive-t-il à l'événement Button?

<%@ 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; 
     } 
    } 
} 
+0

Pourriez-vous poster le code? Il sera beaucoup plus facile de déboguer de cette façon. –

+0

plz voir la mise à jour. –

Répondre

3

Est-ce que cela se produit également lorsque vous utilisez Response.Redirect au lieu de Server.Transfer? Quelle URL voyez-vous dans la barre d'adresse du navigateur après le Server.Transfer?

+0

'http: // localhost: 1051/WEb/Default.aspx' –

+0

Ainsi, lorsque vous soumettez le formulaire, il est soumis à la mauvaise page, votre navigateur pense toujours que vous êtes sur default.aspx, puisque le transfert s'est passé sur le serveur, pas sur le client. Bet Response.Redirect a résolu votre problème? – Henk

+0

Puis quand utiliser Server.Transfer()? Quelle est son utilité? –

0

Que fait votre formulaire/événement bouton? On dirait que vous avez du code s'exécutant sur PostBack mais sans voir le code c'est difficile à dire.

0

Est-ce que "Envoyer un courrier" fonctionne correctement si vous vous connectez par défaut mais ne fermez pas le navigateur? Mon hypothèse est Server.Transfer est le problème. Default reçoit l'événement, puis transfère le contrôle à TeacherControlPanel mais ne transmet pas l'événement. Donc, comme l'a dit Henk, essayez de rediriger.

+0

Mais cela fonctionnait hier. Le problème est survenu lorsque j'ai ajouté une nouvelle page dans le projet. –

Questions connexes