如何在asp.net中的ViewState中存储数组?

时间:2011-02-06 16:16:18

标签: c# asp.net viewstate

protected void Button2_Click(object sender, EventArgs e)
    {
        int[] L = { 1, 2, 3, 4, 5 };
        ViewState["I"] = L.ToArray();
    }
protected void Button1_Click(object sender, EventArgs e)
    {
        int[] I = { };
        if (ViewState["I"] != null)
            I = (int[])ViewState["I"];
        for (int i = 0; i < I.Length; i++)
            Response.Write(I[i].ToString());
    }

运行程序时,会发生错误:

  

无法投射类型的对象   'System.Collections.Generic.List`1 [System.Int32]'   输入'System.Int32 []'。

为什么会出现此错误?

2 个答案:

答案 0 :(得分:4)

ToArray()方法创建一个IEnumerable集合,即List。那不是int []。

我还建议删除“ToArray()”扩展方法

答案 1 :(得分:1)

删除.ToArray()调用。 L已经是一个int数组(int []是一个数组构造函数)。您收到错误的原因是因为您在将其存储为IList时尝试将其强制转换为int数组。

所以重申一下,就是不要打电话.ToArray,你应该很好!