2011-02-06 2 views
1
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()); 
    } 

При запуске программы возникает ошибка:Как сохранить массив в ViewState в asp.net?

Невозможно привести объект типа 'System.Collections.Generic.List`1 [System.Int32]' к типу «System. Int32 [].

Зачем возникает эта ошибка?

ответ

1

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

Чтобы повторить, просто не звоните. ToArray, и вы должны быть хорошими!

+0

Привет. Я сделал это, но это не сработало. – vmahdavi

4

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

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

+0

Привет. Я сделал это, но это не сработало. – vmahdavi

+0

Хм .. очень странно .. Я только что создал новый проект asp.net, и код работал просто отлично:/ – Herter

+0

это действительно странно? Все работает нормально, хотя сейчас? – jonezy

Смежные вопросы