我有一个动态加载用户控件的 ASP.Net 页面,我想在它们之间共享一个数据表
我使用会话状态如下
HttpContext.Current.Session["DataTable"] = DT;
并在用户控件中按以下方式访问它
gridVw.DataSource =(DataTable) HttpContext.Current.Session["DataTable"] ;
gridVw.DataBind();
数据已成功加载,但问题是在访问服务器端的任何事件或回发时,会引发无效视图状态的错误(仅在 IE 中)
从页面访问会话也会在回发时导致同样的问题
这是错误页面
此页面的状态信息无效,可能已损坏。FormatException:输入不是有效的 Base-64 字符串,因为它包含非 base 64 字符、两个以上的填充字符或填充字符中的非法字符。]
System.Convert.FromBase64_ComputeResultLength(Char* inputPtr, Int32 inputLength) +10545429 System.Convert.FromBase64CharPtr(Char* inputPtr, Int32 inputLength) +71
System.Convert.FromBase64String(String s) +41
System.Web.UI.ObjectStateFormatter。反序列化(字符串输入字符串,目的目的)+66
System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter2.Deserialize(字符串序列化状态,目的目的)+8
System.Web.UI.Util.DeserializeWithAssert(IStateFormatter2 格式化程序,字符串序列化状态,目的用途) +40
System.Web.UI.HiddenFieldPageStatePersister.Load() +127[ViewStateException:无效的视图状态。
我认为这是因为会话有长数据或零分隔符或其他任何原因导致
System.Convert.FromBase64
我使用了另一个会话变量(虚拟数字)并从用户控件访问它以确保此用户控件没有问题并且没有问题
问题是我不想使用 Session 来保存我的数据表,因为我知道它的缺点,但还有其他建议吗?
注意:我正在以静态方法()在网页中加载用户控件,WebMethod
这使我无法采取任何可能的解决方法