2011-02-09 2 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

형식을 이미 serializable로 표시 한 경우 컬렉션을 IEnumerable 대신 List로 저장해보십시오. IEnumerable 인터페이스에서 직렬화 할 수없는 일종의 LINQ 콘크리트 컬렉션 유형을 추측하고 있습니다.

+0

간단한 답변과 작동 원리 :-디 –

관련 문제