2009-08-17 3 views
0

Среди других, у меня есть две страницы в моем проекте веб-сайта. Default.aspx и TeacherControlPanel.aspx.asp.net жуткий загрузка страницы

Пользователь дает свои учетные данные в Default.aspx, создается файл cookie, а затем он является Server.Transfer() ed для TeacherControlPanel.aspx.

TeacherControlPanel.aspx имеет кнопку выхода из системы и другую кнопку с именем «Отправить почту».

Если пользователь нажимает кнопку выхода из системы, файл cookie удаляется, и он перенаправляется на Default.aspx.

Если пользователь закрывает браузер без выхода из системы, когда он открывает страницу Default.aspx, он автоматически перенаправляется на TeacherControlPanel.aspx, поскольку файл cookie существует.

Теперь все работает нормально, за исключением того, что я нажимаю кнопку «Отправить почту» на TeacherControlPanel.aspx, тогда загружается Default.aspx, а затем загружается TeacherControlPanel.aspx, но обработчик события Button не выполняется.

Почему Default.aspx загружается снова и что происходит с событием 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

Не могли бы вы выслать код? Это будет намного легче отлаживать таким образом. –

+0

plz см. Обновление. – 2009-08-17 13:18:31

ответ

3

Это также происходит, когда вы используете Response.Redirect вместо Server.Transfer? Какой URL-адрес вы видите в адресной строке браузера после Server.Transfer?

+0

'http: // localhost: 1051/WEb/Default.aspx' – 2009-08-17 13:21:48

+0

Итак, когда вы отправляете форму, она отправляется на неправильную страницу, ваш браузер по-прежнему считает, что вы находитесь по умолчанию .aspx, так как передача произошла на сервере, не на клиенте. Bet Response.Redirect решил вашу проблему? – Henk

+0

Тогда, когда использовать Server.Transfer()? В чем его польза? – 2009-08-17 13:26:14

0

Что вы делаете для своей формы/кнопки? Похоже, что у вас есть код, исполняемый на PostBack, но не видя кода, который трудно сказать.

0

Действительно ли «Отправить почту» работает правильно, если вы вошли в систему по умолчанию, но не закрываете браузер? Мое предположение - проблема Server.Transfer. По умолчанию принимается событие, а затем передается элемент управления в TeacherControlPanel, но не передается событие.

Итак, как сказал Хенк, попробуйте перенаправить.

+0

Но вчера это работало. Проблема возникла, когда я добавил новую страницу в проект. – 2009-08-17 13:48:28

Смежные вопросы