2012-07-03 6 views
0

그래서 C#으로 ASP.NET 페이지를 만들고 있습니다. 2 개의 텍스트 상자와 3 개의 버튼이있는 매우 간단한 폼이 있습니다. 'submit'버튼을 클릭하면 SQL Server 데이터베이스를 호출하여 정보를 검색합니다. 데이터가 검색되면로드 된 값 중 하나를 확인하는 if 문이 있습니다. 문제는 버튼을 클릭 한 후 페이지가 고정 된 것으로 보이며 다시 클릭 할 수 없다는 것입니다. 여전히 텍스트 상자에 데이터를 입력 할 수는 있지만 버튼이 LinkButton으로 표시되지 않으면 마우스 아이콘이 변경되지 않습니다.ASP.NET 페이지 동결

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using CharacterSheet.BLL; 
using CharacterSheet.Data; 

public partial class Login : System.Web.UI.Page 
{ 

    protected void ClearButton_Click(object sender, EventArgs e) 
    { 
     UserBox.Text = ""; 
     PassBox.Text = ""; 
    } 

    protected void SubmitButton_Click(object sender, EventArgs e) 
    { 
     PlayerController pc = new PlayerController(); 
     Player player; 

     if (UserBox.Text.Contains('@') && UserBox.Text.Contains(".c")) 
      player = pc.GetByEmail(UserBox.Text); 
     else 
      player = pc.GetByUser(UserBox.Text); 


     if (player != null) 
     { 
      if (!player.Flagged) 
      { 
       if (PassBox.Text != player.Password) 
       { 
        ErrorLabel.Text = "Password does not match our records. Please retype carefully..."; 

        player.LoginAttempts++; 

        if (player.LoginAttempts >= 3) 
         player.Flagged = true; 

        pc.Update(player); 
       } 
       else 
        Response.Redirect(SiteData.LoginMainPage); 
      } 
      else 
       ErrorLabel.Text = "Your account has been flagged. Please e-mail our support team."; 
     } 
     else 
      ErrorLabel.Text = "Unable to find user. Please retype carefully..."; 
    } 
} 

그리고 ASP 마크 업 페이지의 코드 : 다음 ASPX.CS 페이지에 대한 코드는 다음과 같습니다 사람에게

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server"> 
    <style type="text/css"> 
     .leftColumn 
     { 
      text-align: right; 
     } 
     .style1 
     { 
      width: 30%; 
      text-align: right; 
      height: 47px; 
     } 
     .style2 
     { 
      width: 70%; 
      text-align: right; 
      height: 47px; 
     } 
    </style> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server"> 
    <table> 
     <tr> 
      <td class="leftColumn"> 
       <asp:Label ID="Label1" runat="server" CssClass="FormText" 
        Text="Username or Email"></asp:Label> 
      </td> 
      <td> 
       <asp:TextBox ID="UserBox" runat="server" ToolTip="Enter your username here"></asp:TextBox> 
       <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
        ControlToValidate="UserBox" ErrorMessage="Username or Email is required" 
        ForeColor="Red">*</asp:RequiredFieldValidator> 
      </td> 
     </tr> 
     <tr> 
      <td class="leftColumn"> 
       <asp:Label ID="Label2" runat="server" CssClass="FormText" Text="Password"></asp:Label> 
      </td> 
      <td> 
       <asp:TextBox ID="PassBox" runat="server" TextMode="Password" 
        ToolTip="Enter your password here" TabIndex="1"></asp:TextBox> 
       <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
        ErrorMessage="Password is required" ForeColor="Red" 
        ControlToValidate="PassBox">*</asp:RequiredFieldValidator> 
      </td> 
     </tr> 
     <tr> 
      <td class="style1"></td> 
      <td class="style2"> 
       <asp:ValidationSummary ID="ValidationSummary" runat="server" 
        CssClass="ValidationSumary" ForeColor="Red" Height="43px" 
        style="text-align: left" Width="335px" DisplayMode="List" /> 
       <asp:LinkButton ID="SubmitButton" runat="server" CssClass="FormButton" 
        TabIndex="2" onclick="SubmitButton_Click" PostBackUrl="~/Login.aspx">Submit</asp:LinkButton> 
       <asp:LinkButton ID="ClearButton" runat="server" CausesValidation="False" 
        CssClass="FormButton" TabIndex="3" onclick="ClearButton_Click">Clear</asp:LinkButton> 
       <asp:LinkButton ID="NewAcctButton" runat="server" CausesValidation="False" 
        CssClass="FormButton" TabIndex="4">Create Account</asp:LinkButton> 
       <br /> 
       <asp:Label ID="ErrorLabel" runat="server" ForeColor="Red" 
        CssClass="FormErrorLabel"></asp:Label> 
      </td> 
     </tr> 
    </table> 
</asp:Content> 

덕분에이 도움을 줄 수있는 사람! :-)

편집 : 추가 조사 (코드 줄을 연속적으로 주석 처리)하면 "ErrorLabel.Text"를 업데이트 할 때 문제가 발생한다는 것을 알았습니다. 그렇게하지 않으면 잘 작동합니다 ... 지금 많이 혼란 스럽습니다 ...

+0

어디에서 디버깅 했습니까? 디버깅되는 위치는 어디입니까? –

+0

디버깅을 시도하여 처리가 중지되는 위치를 찾으십시오. 어쩌면 플레이어를 (이름 또는 이메일로) 가져 오려고하거나 사용자를 업데이트하려고 할 때입니다. 또 다른 아이디어 : 존재하지 않는 사용자를 제출하십시오. 페이지가 멈추거나 평소와 같이 반응합니까? –

+0

존재하지 않는 사용자를 제출할 때도 똑같은 일을합니다. 실제로 멈추지 않습니다 ... 처음에는 버튼을 누른 후에도 페이지가 계속 실행되지만 버튼이 응답하지 않습니다 ... – Jack

답변

0

레이블의 속성에서 임의로 버튼을 클릭 한 후, t 레이블에 CSS 클래스를 첨부하십시오. 이유는 모르겠지만 문제가 해결되었습니다.

1

aspx 페이지에 원하지 않는 코드가 있거나 런타임 오류가 발생하면 페이지가 멈 춥니 다. 이렇게하면 코드를 다시 한 번 분석하여 원치 않는 사항을 제거하지 않아도됩니다.