如何存储数组并在回发后使其可用

时间:2017-04-08 08:36:28

标签: asp.net arrays

我需要一些帮助,在回发后保留一个数组。

在页面加载时,我创建一个包含三个随机数的数组,并将它们从最低到最高排序。然后,这些数字用于比较存储在生成数字位置的另一个字符串中的字符。

当点击提交按钮时,会重新生成数字并且验证失败,因为现在有一组新的数字。

这里是代码的一部分......我需要保留的数组是rannumInt。

int[] rannumInt = { 0, 0, 0 };

protected void page_load()
{
    if (!IsPostBack)
    {
        int i, j;
        if (rannumInt[0] == 0)
        {
            for (i = 0; i < 3; i++)
            {
                Random rannum = new Random();
                rannumInt[i] = rannum.Next(1, 9);
                if (i > 0)
                {
                    for (j = 0; j < i; j++)
                    {
                        if (rannumInt[i] == rannumInt[j])
                        {
                            i--;
                        }
                    }
                }
            }
            Array.Sort(rannumInt);

            Label1.Text = Convert.ToString(rannumInt[0]);
            TextBox1.Text = Convert.ToString(rannumInt[0]);
            Label2.Text = Convert.ToString(rannumInt[1]);
            TextBox2.Text = Convert.ToString(rannumInt[1]);
            Label3.Text = Convert.ToString(rannumInt[2]);
            TextBox3.Text = Convert.ToString(rannumInt[2]);
        }
    }
    else
    {

    }
}

1 个答案:

答案 0 :(得分:0)

您必须将rannumInt存储在某处,例如Session或ViewState。然后当发生PostBack时,将ViewState转换回数组。

if (!Page.IsPostBack)
{
    if (rannumInt[0] == 0)
    {
        Array.Sort(rannumInt);
        Label1.Text = Convert.ToString(rannumInt[0]);

        //save the array into the viewstate
        ViewState["rannumInt"] = rannumInt;
    }
}
else
{
    //check if the viewstate exists
    if (ViewState["rannumInt"] != null)
    {
        //convert it back to an int[]
        rannumInt = ViewState["rannumInt"] as int[];
    }
}

如果您希望多个网页和/或网页重新加载的数字相同,请使用Session