gpt4 book ai didi

asp.net - 我可以在 ViewState 中存储 xmlDocument 对象吗?

转载 作者:行者123 更新时间:2023-12-02 14:02:37 24 4
gpt4 key购买 nike

我有一个 XML 文档,我想将其存储在 ViewState 中,这样在每次回发时我不需要再次从其物理路径加载它。我也不想将其存储在 SessionState 中。

当我尝试在 ViewState 中插入它时,出现错误:

异常详细信息:System.Runtime.Serialization.SerializationException:程序集“System.Xml,版本=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”中的类型“System.Xml.XmlDocument”未标记为可序列化。

我的属性(property)是这样的:

private XmlDocument MyDocument      {
get
{
object viwObj = ViewState["MyDocument"];
if (viwObj != null)
return (XmlDocument)viwObj;

XmlDocument xmlDoc = GetMyDocument();
ViewState["MyDocument"] = xmlDoc;

return xmlDoc;
}
}

如何使 xml 文档可序列化?

谢谢

最佳答案

您可以将 XmlDocument 序列化为 XML 字符串,并将该字符串保存在 ViewState 中。

序列化:

using (var sw = new StringWriter())
using (var xw = new XmlTextWriter(sw))
{
xmlDoc.WriteTo(xw);
}

ViewState["MyDocument"] = sw.ToString()

反序列化:

var xmlDoc = new XmlDocument();
xmlDoc.LoadXml((string) ViewState["MyDocument"]);

这种序列化并不真正适合 get/set 属性,因此您很可能希望重写 SaveViewState() 和 LoadViewState() 方法您的用户控件/页面,并在其中添加序列化/反序列化逻辑。

关于asp.net - 我可以在 ViewState 中存储 xmlDocument 对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1951847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com