1

ランダムな数字を初期化する2つのラベルと、2つのランダムな数字を追加した後に答えが正しいかどうかを確認するためのテキストボックスを含むフォームがあります。私が抱えている問題は、SUBMITが次のランダムな数値のセットを処理するため、結果が常に正しくないことです。これが私がこれまでに持っているコードです。

namespace _2ndGradeMath
{

    public partial class Default : System.Web.UI.Page
    {
        Random random = new Random();

        protected void Page_Load(object sender, EventArgs e)
        {
            lblNum1.Text = random.Next(0, 10).ToString();
            lblNum3.Text = random.Next(0, 10).ToString();
            int num1 = int.Parse(lblNum1.Text);
            int num2 = int.Parse(lblNum3.Text);
            lblAnswer.Text = (num1 + num2).ToString();
            lblAnswer.Visible = false;
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            if (TextBox1.Text != lblAnswer.Text)
            {
                Button1.Attributes.Add("onClick", "javascript:alert('Incorrect');");
            }

            else if (TextBox1.Text == lblAnswer.Text)
            {
                Button1.Attributes.Add("onClick", "javascript:alert('Correct');");
            }

            TextBox1.Text = "";           
        }
    }
}
4

3 に答える 3

5

IsPostBackを使用して、ページが最初にロードされたときにのみ初期化コードを実行します。

protected void Page_Load(object sender, EventArgs e)
{
   if (!IsPostBack)    
   {
        lblNum1.Text = random.Next(0, 10).ToString();
        lblNum3.Text = random.Next(0, 10).ToString();
        int num1 = int.Parse(lblNum1.Text);
        int num2 = int.Parse(lblNum3.Text);
        lblAnswer.Text = (num1 + num2).ToString();
        lblAnswer.Visible = false;
  }
}
于 2013-03-26T19:08:58.073 に答える
0

このコードをに追加することを検討してくださいPreRender

protected override void OnPreRender(EventArgs e)
{
    Session["Answer"] = lblAnswer.Text;
    base.OnPreRender(e);
}

そして、このようClickに答えをつかみますSession

if (TextBox1.Text != Session["Answer"])

そして、私はあなたが実際にこの答えですべての投稿に新しい番号を生成したいと思っていることを覚えておいてください。

于 2013-03-26T19:09:31.357 に答える
0

ここに問題があります。ページが読み込まれるたびに、新しいランダムな数値が読み込まれます。これがPage_Load関数の機能です。ページが読み込まれるたびに実行されます。これには、ページが送信されるたびも含まれます。したがって、ユーザーが送信を押すと、新しいランダムな番号が割り当てられ、それが彼の答えを間違ったものにします。ランダムな番号を割り当てる必要があるのは、次の2つの場合のみです。

まず、ページが初めて読み込まれるとき。これは、プロパティIsPostBackisfalseをチェックすることで実行できます。

protected void Page_Load(object sender, EventArgs e)
{
      if(!IsPostBack){
            lblNum1.Text = random.Next(0, 10).ToString();
            lblNum3.Text = random.Next(0, 10).ToString();
      }
.
.
.
}

第二に、ユーザーが正しく答えたとき。

else if (TextBox1.Text == lblAnswer.Text)
{
        Button1.Attributes.Add("onClick", "javascript:alert('Correct');");
        lblNum1.Text = random.Next(0, 10).ToString();
        lblNum3.Text = random.Next(0, 10).ToString();
}
于 2013-03-26T19:12:48.607 に答える