2011-02-06 66 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()); 
    } 

當我運行程序時,發生錯誤:如何將數組存儲在asp.net中的ViewState中?

無法轉換 類型的對象 'System.Collections.Generic.List`1 [System.Int32]' 爲類型「系統。 INT32 []」。

爲什麼會發生此錯誤?

回答

1

刪除.ToArray()調用。 L已經是int的一個數組(int []是一個數組構造函數)。你得到錯誤的原因是因爲你正試圖將它作爲IList存儲時返回給一個int數組。

所以要重申,只是不要打電話給.ToArray,你應該很好!

+0

嗨。我做到了,但沒有奏效。 – vmahdavi 2011-02-06 18:09:05

4

ToArray()方法創建一個IEnumerable集合,即List。這不是一個int []。

我也建議只刪除「ToArray()」擴展方法

+0

嗨。我做到了,但沒有奏效。 – vmahdavi 2011-02-06 17:40:57