2010-11-08 54 views
0

我读过的地方,ASP.net的事件是基于视图状态的ASPX页面。提交的控件的值与视图状态的值相匹配,如果发现任何差异,则调用相应的事件。是基于视图状态的ASP .NET中的事件

但是我的问题是: “当事件确实基于视图状态时,甚至当使用EnableViewState = false禁用视图状态时为什么会触发事件。

谢谢, 大师。

+0

任何链接到您指的文章? – InSane 2010-11-08 04:07:02

回答

0

如果你真的想了解的ViewState,去通过这篇文章......

http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx

而这一次是官方@ MSDN ... http://msdn.microsoft.com/en-us/library/ms972976.aspx

我能说的是.. 。尝试通过我刚才分享的第一个链接...并在该文章结尾处,您将获得所有查询的答案。我认为这是关于这个主题的最好的文章。

简短的回答是......事件总是会在那里,因为这就是页面生命周期应该如何......按特定的顺序!而这与视图状态是否开启无关。

0

ViewState只是偶然与ASP.NET事件相关。更好的措施是将提交的控件的值与重新构建页面后找到的相应控件进行匹配。一个页面是基于ViewState 的组合来重新构造的,如代码前面定义的页面的原始布局。 (更不用说,可以在你自己的页面/控件或第三方自定义控件的CreateChildControls虚拟方法内在服务器端创建控件)

至于你的问题,我的猜测是事件正在被解雇因为触发事件的控件不是基于状态的 - 它们是在代码前面静态定义的并且始终可用。

相比之下,一些控件在运行中创建的。例如,如果您将RepeaterItemTemplate组合使用,则可以在项目模板中放置一个按钮。中继器中的项目依赖于其数据源中的值,而不是代码前沿。因此,如果您在这种情况下禁用ViewState,您确实会搞砸事件处理。

相关问题