0

セッションにasp.net htmlテーブルを保存し、その作業ファイルをInProcセッション状態にします。

stateserver を使用している間、セッションからテーブル オブジェクトを取得するシリアライゼーションに問題があります。

私はそれを成し遂げることができないベロコードで試しました...

Table table = null;
Session["table"] = tableToJson(table); 
table = jsonToTable(Session["table"]);               

 private string tableToJson(Table obj)
    {
       //Formatting.Indented,  new JsonSerializerSettings() {ReferenceLoopHandling = ReferenceLoopHandling.Serialize}
     //  return JsonConvert.SerializeObject(obj,Formatting.Indented,  new JsonSerializerSettings() {ReferenceLoopHandling = ReferenceLoopHandling.Serialize});
        //return JsonConvert.SerializeObject(obj);
       // return JsonConvert.SerializeObject(obj, Newtonsoft.Json.Formatting.Indented, new JsonSerializerSettings() { PreserveReferencesHandling = PreserveReferencesHandling.All });

        StringBuilder sb = new StringBuilder();
        HtmlTextWriter tw = new HtmlTextWriter(new StringWriter(sb));
        obj.RenderControl(tw);
        return tw.InnerWriter.ToString();
    }
    private Table jsonToTable(object obj)
    {
        string serializedData = (string)obj;
        serializedData = serializedData.Replace("<table", "<table runat=\"server\"");
        Control tbl = Page.ParseControl(serializedData);
        return tbl as Table;            
        //var serializer = new XmlSerializer(typeof(Table));
        //var reader = new XmlTextReader(new StringReader(serializedData));
        //return (Table)serializer.Deserialize(reader);

        //string o = (string)obj;
        //Table tbl = (Table)Newtonsoft.Json.JsonConvert.DeserializeObject(o, typeof(Table));
        //return tbl;
    }

参照して ください

4

0 に答える 0