Как исправить ошибку сериализации ViewState с помощью моего пользовательского элемента управления? - PullRequest
3 голосов
/ 09 февраля 2011

Я пишу свой первый пользовательский элемент управления asp.net.

Он отображает список местоположений, из которых пользователь может выбрать.Я могу загрузить список местоположений в элемент управления и увидеть, какое местоположение выбрал пользователь, когда страница отправляет ответ, но сам список теряется, когда страница отправляет ответ.

Я заполняю списокобъект типа 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, и данные будут сохраняться до обратной передачи.

Как мне это исправить?

1 Ответ

3 голосов
/ 09 февраля 2011

Если вы уже пометили свой тип как сериализуемый, попробуйте сохранить коллекцию как список вместо IEnumerable.Я предполагаю, что в интерфейсе IEnumerable есть какой-то конкретный тип коллекции LINQ, который не сериализуем.

...