我正在开发一个“猜数字”的应用程序。如果用户已经使用了所有猜测,则会显示一个按钮(新游戏),如果用户点击它,游戏(当然)会重新开始。
问题是,当单击时,表单将被发布并显示错误消息,因为输入字段为空(验证)。我只是无法弄清楚表格发布的原因。单击“新游戏”按钮时,我在代码中唯一拥有的是重置会话的行?
以下是我的代码隐藏文件中的代码。这是很多代码,因为我不知道我能删除什么,而不会破坏了解问题原因的可能性。
代码背后:
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();
}
答案 0 :(得分:1)
我猜你在单击按钮时启动了一些客户端验证,因为它触发了默认验证脚本。
在这种情况下,您应该只能将此属性添加到新游戏按钮:
CausesValidation="false"