Webページでは、次のように保存しDictionary
ていViewState
ます:
Dictionary<string, string> items = new Dictionary<string, string>();
ViewState["items"] = items;
それはうまくいきます。ただし、何らかの理由で、Dictionary
直接使用するのではなく、独自のクラスを使用したい:
class MyDictionary : Dictionary<string, string>
{
...
}
MyDictionary items = new MyDictionary();
ViewState["items"] = items;
期待どおりに動作しません。ASP.NETは事実について不平を言っています
MyDictionary はシリアライズ可能とマークされていません
クラス属性は継承されないので問題ありません。だから私は自分のコードを変更しました:
[Serializable]
class MyDictionary : Dictionary<string, string> { ... }
しかし、そうすると、今度はページのポストバック後に別のエラー メッセージが表示されます。
このページの状態情報は無効であり、破損している可能性があります。
System.Web.UI.ObjectStateFormatter.Deserialize(ストリーム入力ストリーム)
viewstate が をシリアル化できる場合Dictionary
、それを継承するクラスでは機能しないのはなぜですか? これを機能させる方法は?