Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 表单在不应';T_C#_Asp.net_Forms - Fatal编程技术网

C# 表单在不应';T

C# 表单在不应';T,c#,asp.net,forms,C#,Asp.net,Forms,我正在做一个“猜数字”的应用程序。如果用户使用了所有猜测,则会显示一个按钮(新游戏),如果用户单击该按钮,游戏(当然)将重新开始 问题是,当单击时,表单会被发布,并显示错误消息,因为输入字段为空(验证)。我就是不明白为什么表格会被贴出来。当点击新游戏按钮时,代码中唯一的东西就是一行用于重置会话的代码 下面是我的代码隐藏文件中的代码。这是很多代码,因为我不知道我可以删除什么而不破坏理解问题原因的可能性 代码隐藏: private SecretNumber guessNr = null; priv

我正在做一个“猜数字”的应用程序。如果用户使用了所有猜测,则会显示一个按钮(新游戏),如果用户单击该按钮,游戏(当然)将重新开始

问题是,当单击时,表单会被发布,并显示错误消息,因为输入字段为空(验证)。我就是不明白为什么表格会被贴出来。当点击新游戏按钮时,代码中唯一的东西就是一行用于重置会话的代码

下面是我的代码隐藏文件中的代码。这是很多代码,因为我不知道我可以删除什么而不破坏理解问题原因的可能性

代码隐藏:

private SecretNumber guessNr = null;

private SecretNumber guessSession
{
    get { return Session["guessSession"] as SecretNumber; }
    set { Session["guessSession"] = value; }
}

protected void Page_Load(object sender, EventArgs e)
{

}

protected void btnCheckNr_Click(object sender, EventArgs e) {
    if (!Page.IsValid) {
        return;
    }

    else {
        if (guessSession == null){
            guessSession = new SecretNumber();
        }

        guessNr = guessSession;

        infoToUser.Visible = true;

        string history = "";
        foreach (var guesses in guessNr.PreviousGuesses) {
            history += "[" + guesses.ToString() + "] ";
        }

        var guessedNr = int.Parse(inputBox.Text);
        var result = (int)guessNr.MakeGuess(guessedNr);

        guessHistory.Text = history;
        lastGuess.Text = "[" + guessedNr.ToString() + "]";

        switch (result){
            case 1:
                messageToUser.Text = " The number is too low.";
                break;
            case 2:
                messageToUser.Text = " The number is too high.";
                break;
            case 3:
                messageToUser.Text = String.Format(" Congratulations! You did it on {0} tries!", guessNr.Count);
                btnCheckNr.Enabled = false;
                inputBox.Enabled = false;
                newGame.Visible = true;
                break;
            case 4:
                messageToUser.Text = String.Format("" Game Over. The number was: {0}"", guessNr.Number);
                btnCheckNr.Enabled = false;
                inputBox.Enabled = false;
                newGame.Visible = true;
                break;
        }
    }
}

protected void btnNewGame_Click(object sender, EventArgs e) {
    Session.Abandon();
}

我猜当点击按钮时,您会启动一些客户端验证,因为它会触发默认的验证脚本

在这种情况下,您应该能够将此属性添加到“新建游戏”按钮:

CausesValidation="false"

在ASP.NET Web表单中,整个Web应用程序是一个表单,这意味着表单(即封装每个页面的ASP.NET Web表单)始终是发布的。要告诉ASP.NET Web窗体某些控件不是操作的一部分,可以使用以下方法。此外,关于“我不知道我可以移除什么而不破坏理解问题原因的可能性”;您应该始终找到并发布最少的代码来重现问题。这将使帮助更容易。