无法将对象从视图状态转换为集合

时间:2014-11-22 06:47:28

标签: c# asp.net .net collections viewstate

我正在存储List<KeyValuePair<string, bool>>的集合 在ViewState中,当我尝试将其强制转换回List<KeyValuePair<string, bool>>时会出现问题 错误状态

  

无法转换类型为'System.Collections.Generic.Dictionary 2[System.String,System.Boolean]' to type 'System.Collections.Generic.List 1 [System.Collections.Generic.KeyValuePair`2 [System.String,System.Boolean]]'的对象。

那么如何将我的键值列表从ViewState转换回来?

我的代码行是:

List<KeyValuePair<string, bool>> myObject = (List<KeyValuePair<string, bool>>)ViewState["listOutputWords"];

2 个答案:

答案 0 :(得分:1)

试试这个: -

KeyValuePair<string, bool> myObject = (KeyValuePair<string, bool>)ViewState["listOutputWords"];

正如编译器明确提到的那样,你的ViewState持有Dictionary的{​​{1}},但是你试图将它强制转换为错误的字典列表。

答案 1 :(得分:1)

根据例外情况,您需要在Dictionary<string, bool>中保存ViewState。如果您确实需要List<KeyValuePair<string, bool>>,请尝试:

List<KeyValuePair<string, bool>> myObject = ((Dictionary<string, bool>)ViewState["listOutputWords"]).ToList();

或者您可以将其反序列化为字典并使用:

Dictionary<string, bool> myObject = (Dictionary<string, bool>)ViewState["listOutputWords"];