Как я могу сохранить массив в ViewState в asp.net? - PullRequest
1 голос
/ 06 февраля 2011
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 ]

4 голосов
/ 06 февраля 2011

Метод ToArray () создает коллекцию IEnumerable, то есть список.и это не int [].

Я также предлагаю просто удалить метод расширения "ToArray ()"

1 голос
/ 06 февраля 2011

Удалите вызов .ToArray ().L уже является массивом int (int [] является конструктором массива).Причина, по которой вы получаете ошибку, заключается в том, что вы пытаетесь привести ее обратно к массиву int, когда она хранится как IList.

Так что повторяюсь, просто не звоните .ToArray, и вы должны быть хорошими!

...