Я пытаюсь получить словарь из состояния просмотра. Но я получаю сообщение об ошибке, что он не помечен как сериализованный.

var groupByCountDictionary = from supplier in supplierDirectoryList
                             group supplier by supplier.ProductCategory into grp
                             select new
                             {
                                 groupName = grp.Key,
                                 count = grp.Select(x => x.ProductCategory).Count()
                             };
ViewState["GroupbyCount"] = groupByCountDictionary;       
Dictionary<string,int> groupByDictionary = (Dictionary<string,int>) ViewState["GroupbyCount"];

Затем с помощью другого метода после отправки я пытаюсь получить словарь из состояния просмотра, как указано выше, что приводит к ошибке.

0
SPKan 6 Июл 2013 в 11:45

1 ответ

Лучший ответ

Из вашего кода groupByCountDictionary не является словарем, это IEnumerable<anonymous_type>. Вы можете переписать свой LINQ-код, чтобы использовать метод .ToDictionary(...), который вернет ожидаемый объект.

2
alex 6 Июл 2013 в 11:52
Спасибо за ответ, но когда я получаю словарь из состояния просмотра, возникает ошибка. Не на этапе хранения.
 – 
SPKan
6 Июл 2013 в 11:59
@Kanishka, это потому, что вы не можете транслировать IEnumerable<anonymous_type> на Dictionary<string,int>
 – 
alex
6 Июл 2013 в 12:00