我的补充逻辑不适用于C#代码

时间:2012-10-25 18:48:55

标签: c# asp.net .net

 public partial class Addition : System.Web.UI.UserControl
    {
        int Add1;
        int Add2;
        int answer;

        protected void Page_Load(object sender, EventArgs e)
        {

    }
    protected void Button2_Click(object sender, EventArgs e)
    {

        //Generates ramdom numbers for addition problem
        Random oRand = new Random();

        Add1 = oRand.Next(30);
        Add2 = oRand.Next(30);

        Label1.Text = Add1.ToString();
        Label2.Text = Add2.ToString();

    }
    protected void Button1_Click(object sender, EventArgs e)
    {

        //Validates users answer
        answer = Convert.ToInt32(TextBox1.Text);

        if (Add1 + Add2 != answer)
            Label3.Text = "InCorrect Answer";
        else
            Label3.Text = "Correct Answer";

        }
    }

过去30分钟我一直在关注这个问题,我知道它很简单,我很遗憾。当我执行程序并在TextBox1中放置正确的答案时,Label3仍然会生成“InCorrect Answer”。我知道这是补救措施,但我做错了什么?

由于

2 个答案:

答案 0 :(得分:3)

在回发时(以及每次加载页面时)都会重新创建用户控件,因此当您设置Add1Add2的值时,它们会在回发时丢失。

您应该使用容器ViewStateSession来保存这些值。

编辑:

或者@ IronMan84建议,只需使用标签(duh)。

答案 1 :(得分:1)

试试这个:

Add1 = Convert.ToInt32(Label1.Text);
Add2 = Convert.ToInt32(Label2.Text);

answer = Convert.ToInt32(TextBox1.Text);

if (Add1 + Add2 != answer)
  Label3.Text = "InCorrect Answer";
else
   Label3.Text = "Correct Answer";