0

だから、私はC#でASP.NETページを作っています。2 つのテキスト ボックスと 3 つのボタンがある非常に単純なフォームがあります。「送信」ボタンをクリックすると、SQL Server データベースが呼び出され、情報が取得されます。データが取得されたら、読み込まれた値の 1 つを確認する if ステートメントがあります。問題は、ボタンをクリックした後にページがフリーズしたように見え、もう一度クリックできないことです。テキストボックスにデータを入力することはできますが、ボタンが LinkBut​​ton として表示されず、マウス アイコンも変化しません。ASPX.CS ページのコードは次のとおりです。

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>

これを手伝ってくれる人に感謝します!:-)

EDIT:さらに調査すると(コード行を順番にコメントアウト)、「ErrorLabel.Text」を更新すると問題が発生することがわかりました。私がそれをしなければ、それはうまく機能します...これは今私をとても混乱させています...

4

2 に答える 2

1

aspx ページに不要なコードがある場合、または実行時エラーが発生した場合、ページはフリーズします。これを回避するには、コードをもう一度分析し、不要なものを削除して実行します。

于 2016-09-27T05:15:51.560 に答える
0

ラベルのプロパティのボタンをランダムにクリックした後、CSS クラスをラベルにアタッチしないと壊れなくなることがわかりました...理由はわかりませんが、問題は解決しました。

于 2012-07-05T03:28:55.603 に答える