2012-07-03 61 views
0

所以,我在C#中創建一個ASP.NET頁面。我有一個非常簡單的形式,其上有2個文本框和3個按鈕。當我點擊「提交」按鈕時,它會調用SQL Server數據庫來檢索一些信息。一旦數據被檢索,我有一個if語句來檢查一個加載的值。問題在於單擊按鈕後頁面似乎凍結,我無法再次單擊它。我仍然可以在文本框中輸入數據,但按鈕不會顯示爲LinkBut​​ton,鼠標圖標不會更改或任何內容。對於ASPX.CS頁面的代碼如下: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頁面的標記代碼:

<%@ 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

在隨機點擊標籤屬性中的按鈕之後,我發現它不會中斷,將一個CSS類附加到標籤上......我不知道爲什麼,但它解決了這個問題。

1

如果在aspx頁面中有任何不需要的代碼或運行時錯誤出現,那麼頁面將凍結。爲了避免這種情況再次分析您的代碼並刪除它將運行的不需要的東西。