代码改变世界

关于“未能加载视图状态”的错误

2011-03-10 16:27  何朝阳  阅读(633)  评论(0编辑  收藏  举报

  今天在系统开发中遇到这个错误:“未能加载视图状态。正在向其中加载视图状态的控件树必须与前一请求期间用于保存视图状态的控件树相匹配。例如,当以动态方式添加控件时,在回发期间添加的控件必须与在初始请求期间添加的控件的类型和位置相匹配。”,如下图:

  调试几个小时一直找不到原因,Google出来的解决方案大致是:“这个问题的出现,大多是ViewState造成的,加 this.Page.EnableViewState = false; 禁用ViewState即可。”,禁用了之后确实不出现这个错误了,但是下拉框中的值取不到了,出现了更多的问题。最后根据错误描述“正在向其中加载视图状态的控件树必须与前一请求期间用于保存视图状态的控件树相匹配。”才想起代码页中有这么一句:

ifrmUpload.Attributes.Add("visible", "true");

  将这句注释掉后,果然一切正常,不知道是不是由于动态改变了ifrmUpload控件的属性,导致视图状态发生改变,也或许是微软的BUG,总之问题是解决了。