在页面刷新之间保存变量

时间:2011-11-08 16:17:42

标签: c# variables

我需要做一个基本的网页(作业)

用户需要在文本框中输入数字。在每个号码后,他需要按“输入号码”按钮。

在几个数字后,他需要按一个不同的按钮来显示他的号码和一些计算。

我无法使用数组(作业限制)。

问题是每次用户按“输入数字”后,变量重置。

我能做什么?

这是代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class WebForm1 : System.Web.UI.Page
    {
       int totalSum=0;
       int mulOdd=1;
       int small=0;
       int big=0;
       float avg=0;
       int pairsum=0;
       int counter = 0;

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

        protected void Button1_Click(object sender, EventArgs e)
        {
            int t;
            counter++;

                t = Convert.ToInt16(TextBox1.Text);
                totalSum = totalSum + t;
                avg = totalSum / counter;
                int odd = t % 2;
                if (odd > 0)
                {
                    mulOdd = mulOdd * t;
                }
                else
                {
                    pairsum = pairsum + t;
                }

                if (t < small)
                {
                    small = t;
                }
                if (t > big)
                {
                    big = t;
                }

            TextBox1.Text = " ";`enter code here`
            Label1.Text = Convert.ToString(counter);
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            Label1.Text = "total Sum" + Convert.ToString(totalSum);
        }
    }
}
谢谢。

5 个答案:

答案 0 :(得分:2)

您需要将变量保存在状态中。有几种方法可以传递变量

[1] Cookies(很少用于此)

[2]会话(适合在不同用户的页面之间存储)

[3] ViewState(为用户保存相同页面)

[4]查询字符串(在页面之间传递)

阅读有关这些的内容,这应该可以解决问题。如果我错过了一些,请原谅我。

答案 1 :(得分:0)

您需要了解page life cyclestate management,特别是view state

答案 2 :(得分:0)

在不知道你的任务条件的情况下很难提供帮助,但是一个可用的方法是在页面上有一个隐藏字段(webusercontrol)来保存字符串。每次单击该按钮时,将数字的字符串表示形式附加到该控件的值,确保使用符号(逗号,#,|,将真正做任何事情)分隔值。然后在过程中的任何时候,您都可以获得该控件的值,将其拆分为角色,并计算您需要计算的任何内容。

由于这被确定为家庭作业,我不会发布代码,但这个过程应该非常简单。

答案 3 :(得分:0)

在页面加载事件中,检查Page.IsPostback属性。如果为true,则根据服务器控件HTML标记中的用户输入重置变量。

阅读@Oded提供的链接。页面生命周期是一个非常重要的主题。

答案 4 :(得分:0)

您可以扩展到所有变量的一些指示......

  1. 删除所有这些变量的全局声明,您不需要为它们设置全局范围:

    int totalSum=0;
    int mulOdd=1;
    int small=0;
    int big=0;
    float avg=0;
    int pairsum=0;
    int counter = 0;
    
  2. Button1_ClicktotalSum存储:

    ViewState["Sum"] = Convert.ToInt16(string.IsNullOrEmpty(ViewState["Sum"])?"0":ViewState["Sum"].ToString()  )+  Convert.ToInt16(TextBox1.Text);
    
  3. 最后,在Button_Click2上执行:

    Label1.Text = "total Sum" + Convert.ToString(string.IsNullOrEmpty(ViewState["Sum"])?"0":ViewState["Sum"].ToString());