그래서 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"를 업데이트 할 때 문제가 발생한다는 것을 알았습니다. 그렇게하지 않으면 잘 작동합니다 ... 지금 많이 혼란 스럽습니다 ...
어디에서 디버깅 했습니까? 디버깅되는 위치는 어디입니까? –
디버깅을 시도하여 처리가 중지되는 위치를 찾으십시오. 어쩌면 플레이어를 (이름 또는 이메일로) 가져 오려고하거나 사용자를 업데이트하려고 할 때입니다. 또 다른 아이디어 : 존재하지 않는 사용자를 제출하십시오. 페이지가 멈추거나 평소와 같이 반응합니까? –
존재하지 않는 사용자를 제출할 때도 똑같은 일을합니다. 실제로 멈추지 않습니다 ... 처음에는 버튼을 누른 후에도 페이지가 계속 실행되지만 버튼이 응답하지 않습니다 ... – Jack