2010-01-25 146 views
0

我有一个aspx页面,动态加载用户控件:有一个UpdatePanel持有这些控件(每次一个)。当我用另一个控件更换控件时,它会失败并显示以下消息:无法加载视图状态

无法加载视图状态。视图状态为 的控件 树必须与前一个应用程序的 期间用于保存视图状态的控制树 相匹配。例如, 动态添加控件时,在返回过程中添加的 控件必须 与在初始 应用程序期间添加的控件的类型和位置匹配。

三个控件的所有继承自System.Web.UI.UserControl。也许我可以解决这个问题做:

  1. 负载在启动时三个控件,然后隐藏他们两个人,因为我们需要它。
  2. 使用三个UpdatePanels,每个用户控件一个。
  3. 有什么建议吗?

回答

0

通过将回发模式设置为条件并手动更新它们,确保回发没有更新不需要的面板。

+0

不,我已经做到了,它抛出了相同的异常。 – VansFannel 2010-01-25 13:42:48

+0

尝试在你的函数中放置一个断点,当你回发时你会点击它。然后使用监视窗口开始在包含您的动态创建的控件的.Controls列表中进行浏览。看看你的控件是否存在于该列表中。如果没有,你将不得不将每个控件添加到它自己的更新面板。 – Daniel 2010-01-25 14:16:08

+0

现在我为每个控件使用一个UpdatePanel。问题已经解决,但现在我有另一个:Microsoft JScript中的运行时错误:Sys.InvalidOperationException:无法找到带有ID的UpdatePanel。 'CreateDestination1_DestinationMainUpdatePanel'。如果您要动态升级,它必须位于另一个UpdatePanel中。 – VansFannel 2010-01-27 12:47:16

0

当您动态添加用户控件时,您是否指定了id属性?你是否再次添加控件,在回发时,将id属性设置为相同的值?

相关问题