2011-02-06 134 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

4

ToArray()メソッドは、IEnumerableコレクション、つまりListを作成します。それはint []ではありません。

「ToArray()」拡張メソッドを削除することもお勧めします。

+0

こんにちは。私はそれをしたが、うまくいかなかった。 – vmahdavi

+0

Hmm ..非常に奇妙です。私はちょうど新しいasp.netプロジェクトを作成し、コードは正常に機能しました:/ – Herter

+0

これは本当に変ですか?今はすべてがうまくいっていますか? – jonezy

関連する問題