若不是浪费了2个小时独立思考,我是不会发帖问的.我承认我笨

youaway 2011-03-18 02:00:23
未能加载视图状态。正在向其中加载视图状态的控件树必须与前一请求期间用于保存视图状态的控件树相匹配。例如,当以动态方式添加控件时,在回发期间添加的控件必须与在初始请求期间添加的控件的类型和位置相匹配。

这是由于我再页面上动态增加控件所致.

但是如果我将page.EnableViewState=false了,页面的中的DropDownList控件则会在提交时选择为空.


所以我想问一下各位,有没有什么好的办法来解决啊?
...全文
200 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
codefighting 2011-03-19
  • 打赏
  • 举报
回复
动态生成的控件,在页面回传的时候,.net不会为其保存状态
在Pageload里处理吧兄弟。
lunasea0_0 2011-03-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 youaway 的回复:]

引用 5 楼 lunasea0_0 的回复:
不要把page.EnableViewState=false,否则每次dropdownlist的值在postback之后很需要重新设。

你动态加载了控件,那么你在ViewState里写个值,说明控件已加载,然后再PostBack回来以后再一次加载你的控件。保持控件树的完整就好了。可在Page_load里面做。

有点明白你的意思,但不知如何……
[/Quote]

已经给出思路了,还想怎么样.
举个例子吧,你有一个AddContorl()的方法,你在需要的时候调用,调用以后设置ViewState["ControlAdded"] = true. 在Page_load()的时候,判断Convert.Boolean(ViewState["ControlAdded"]) == true, 如果相等,再调用AddControl()方法。
youaway 2011-03-18
  • 打赏
  • 举报
回复
高手们都来帮忙啊,都跑哪去了?嫌我分少了吗?
youaway 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lunasea0_0 的回复:]
不要把page.EnableViewState=false,否则每次dropdownlist的值在postback之后很需要重新设。

你动态加载了控件,那么你在ViewState里写个值,说明控件已加载,然后再PostBack回来以后再一次加载你的控件。保持控件树的完整就好了。可在Page_load里面做。
[/Quote]
有点明白你的意思,但不知如何具体去做.麻烦说详细点,我半天的工作就卡在这上面了!
JiangKunJian 2011-03-18
  • 打赏
  • 举报
回复
动态添加控件,使用Request.Froms获取...
或者使用自定义控件方式,在里实现控件动态加载!如果需要比页面的Page_Load更早执行,请把控件中的Page_Load 作用域改成Public
lunasea0_0 2011-03-18
  • 打赏
  • 举报
回复
不要把page.EnableViewState=false,否则每次dropdownlist的值在postback之后很需要重新设。

你动态加载了控件,那么你在ViewState里写个值,说明控件已加载,然后再PostBack回来以后再一次加载你的控件。保持控件树的完整就好了。可在Page_load里面做。
youaway 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 youaway 的回复:]
引用 1 楼 fyxq14hao 的回复:
public int HRID
{
get { return (int)ViewState["HRID"]; }
set { ViewState["HRID"] = value; }
}
比如,在查找按钮时:将其赋值 HRID = DropDownList值
保存按钮时用 属性=HRID 就相当DropDownList的值了.

你的意……
[/Quote]
不行,回发后依旧是空
youaway 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fyxq14hao 的回复:]
public int HRID
{
get { return (int)ViewState["HRID"]; }
set { ViewState["HRID"] = value; }
}
比如,在查找按钮时:将其赋值 HRID = DropDownList值
保存按钮时用 属性=HRID 就相当DropDownList的值了.
[/Quote]
你的意思是把Page.EnableViewState设置为false,然后再用viewstate保存dropdownlist的值?
这样可以吗?我试试.
拉文麦克 2011-03-18
  • 打赏
  • 举报
回复
用js
接分为押宝 2011-03-18
  • 打赏
  • 举报
回复
public int HRID
{
get { return (int)ViewState["HRID"]; }
set { ViewState["HRID"] = value; }
}
比如,在查找按钮时:将其赋值 HRID = DropDownList值
保存按钮时用 属性=HRID 就相当DropDownList的值了.

62,071

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧