2011-02-09 21 views
3

私は最初のasp.netユーザーコントロールを書いています。カスタムコントロールでViewStateのシリアル化エラーを修正するにはどうすればよいですか?

ユーザーが選択できる場所の一覧が表示されます。私はコントロールの場所のリストを読み込むことができ、ページの投稿時にユーザーが選択した場所を見ることができますが、ページ自体がポストバック時に失われます。

IEnumerable<DetailedLocation>のオブジェクトでリストを作成します。ここで、DetailedLocationは、複数のフィールドを持つクラスです。stringフィールド。私はViewStateのにリストを入れしようとすると、私は次のエラーを取得する:

Type 'System.Linq.OrderedEnumerable`2 
[[DetailedLocation, AT.Common, Version=1.0.0.0, Culture=neutral, 
PublicKeyToken=null],[System.String, mscorlib, Version=2.0.0.0, 
Culture=neutral, PublicKeyToken=b77a5c561934e089]]' in Assembly 'System.Core, 
Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not 
marked as serializable. 

確かに、私のタイプは、直列化可能とマークすることができますが、このエラーメッセージが消えません。私はこの仕事を何とかすることが可能でなければならないことを知っています。結局のところ、私はこのタイプのオブジェクトをGridViewに渡すことができ、データはポストバックを通じて持続します。

これを修正するにはどうすればよいですか?

答えて

3

既に型をシリアライズ可能としてマークしている場合は、コレクションをIEnumerableではなくListとして保存してみてください。私はIEnumerableインターフェイスの下で推測しているのは、シリアル化できないLINQ具体的なコレクション型の一種です。

+0

どのような簡単な答えとそれが動作します! :-D –

関連する問題