2012-02-15 14 views
0

私は "数字を推測する"アプリケーションを開発中です。ユーザーがすべての推測を使用した場合、ボタンが表示され(新規ゲーム)、ユーザーがクリックするとゲームが開始されます。フォームは投稿しないでください。

クリックすると、フォームがポストされ、入力フィールドが空(検証)であるためにエラーメッセージが表示されるという問題があります。フォームがなぜ投稿されるのか分かりません。新しいゲームボタンがクリックされたときに私がコード内に持っている唯一のことは、セッションをリセットするための行ですか?

以下は私のコードビハインドファイルのコードです。問題の原因を理解する可能性を遺失しないように私が何を削除できるか分からなかったので、たくさんのコードがあります。背後

コード:

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

、Webアプリケーション全体がフォームを意味し、フォーム、である(つまり、すべてのページをカプセル化するASP.NET Webフォームフォーム)は*常に*投稿されます。 ASP.NET Webフォームにいくつかのコントロールがアクションの一部ではないことを伝えるには、[ValidationGroup](http://www.w3schools.com/aspnet/prop_webcontrol_imagebutton_validationgroup.asp)のようなものを使用できます。また、「問題の原因を理解する可能性をなくすことができなかったことを知りませんでした」に関しては、問題を再現するために、最小限のコードを常に見つけて投稿する必要があります。これは簡単に役立ちます。 – bzlm

答えて

1

私はあなたはそれがデフォルトの検証スクリプトを発射ているため、ボタンがクリックされたときキックオフいくつかのクライアント側の検証を持って推測しています。あなただけの新しいゲームのボタンにこの属性を追加することができる必要があり、その場合には

:ASP.NET Webフォームで

CausesValidation="false" 
+0

偉大な、魅力のように動作します。ありがとう! :) – holyredbeard

関連する問題