2017-11-20 19 views
3

ハングマンゲームを作成しようとすると、私はほとんどそこにいます。 txtBokstavGjettに入力すると、ボタンを押したときに配列が保存されません。私はlosning[]のセッション変数を持っています。配列変数はセッション変数に保存されません

私は本当にここから何をすべきかわからないので、どんな助けも大歓迎です。 変数名はノルウェー語ですが、重要ではありません。

public partial class _Default : System.Web.UI.Page 
{ 
    int antallForsok = 0; 
    string forsokteBokstaver; 
    char[] losning = new char[8]; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Session["antallForsok"] != null) 
     { 
      antallForsok = (int)Session["antallForsok"]; 
     } 
     labForsok.Text = Convert.ToString(antallForsok); 

     if (Session["forsokteBokstaver"] != null) 
     { 
      forsokteBokstaver = (string)Session["forsokteBokstaver"]; 
     } 
     if (Session["losning"] != null) 
     { 
      losning = (char[])Session["losning"]; 
     } 
     if (antallForsok == 0) 
     { 
      for (int k = 0; k < losning.Length; k++) 
      { 
       losning[k] = '_'; 
       labRes.Text += " " + losning[k] + " "; 
       labTestBox.Text += "" + losning[k] + " "; 
      } 
     } 
    } 
    protected void btnKnapp_Click(object sender, EventArgs e) 
    { 
     labRes.Text = ""; 
     labTestBox.Text = ""; 
     string losningOrd = "appelsin"; 
     char brukerGjett = Convert.ToChar(txtBokstavGjett.Text); 
     char[] bokstaver = losningOrd.ToCharArray(); 
     losning = new char[bokstaver.Length]; 
     for (int i = 0; i <bokstaver.Length; i++) 
     { 
      if (brukerGjett == bokstaver[i]) 
      { 
       losning[i] = bokstaver[i]; 
      } 
      else if (!(brukerGjett == bokstaver[i])) 
      { 

      } 
      forsokteBokstaver = brukerGjett.ToString(); 
      labRes.Text += "" + losning[i]; 
      labTestBox.Text += " " + losning[i]; 

     } 
     txtBokstavGjett.Text = ""; 
     antallForsok++; 
     labForsoktBokstav.Text += forsokteBokstaver; 
    } 
    protected void Page_Unload (object sender, EventArgs e) 
    { 
     Session["antallForsok"] = antallForsok; 
     Session["forsokteBokstaver"] = forsokteBokstaver; 
     Session["losning"] = losning; 
    } 
} 

答えて

0

ページが既にブラウザに送信され、レンダリングされた後Page_Unload方法が呼び出されています。これは、セッションに値を保存するライフサイクルでは遅すぎます。

計算時にこれらの値を格納するだけではどうですか?

protected void btnKnapp_Click(object sender, EventArgs e) 
{ 
    labRes.Text = ""; 
    labTestBox.Text = ""; 
    string losningOrd = "appelsin"; 
    char brukerGjett = Convert.ToChar(txtBokstavGjett.Text); 
    char[] bokstaver = losningOrd.ToCharArray(); 
    losning = new char[bokstaver.Length]; 
    for (int i = 0; i <bokstaver.Length; i++) 
    { 
     if (brukerGjett == bokstaver[i]) 
     { 
      losning[i] = bokstaver[i]; 
     } 
     else if (!(brukerGjett == bokstaver[i])) 
     { 

     } 
     forsokteBokstaver = brukerGjett.ToString(); 
     labRes.Text += "" + losning[i]; 
     labTestBox.Text += " " + losning[i]; 

    } 
    txtBokstavGjett.Text = ""; 
    antallForsok++; 
    labForsoktBokstav.Text += forsokteBokstaver; 

    Session["antallForsok"] = antallForsok; 
    Session["forsokteBokstaver"] = forsokteBokstaver; 
    Session["losning"] = losning; 
} 
+1

セッション変数を保存するためにCookieを使用している場合は正しいかもしれませんが、それはPage_Unloadに値を持たなければならないクラスフィールドです。 –

+0

優秀な点、私はそれが当てはまるかもしれないと仮定していましたが、確かに物事がどのように構成されているかに依存します。 –

1

あり、セッション変数から配列を復元するいかなる問題になるが、あなたは再びそれを一掃される「=新しい文字をlosning [...]」行を持つべきではありません。あなたはその行を削除することができます。

関連する問題