为什么我的@page enableviewstate不会覆盖web.config中的EnableViewstate页面?

时间:2009-06-18 23:40:16

标签: asp.net viewstate

我想为几乎所有的页面禁用viewstate,并且我已经在web.config中使用了该元素。

在专门使用viewstate的页面上,我使用了EnableViewState = true。但是页面无法正常工作,依赖于viewstate的下拉列表未在回发中填充。

为了尝试查找模式,我在web.config设置为true时能够在页面级别专门禁用viewstate,但我似乎无法执行web.config设置的反向操作为false,页面设置为true。

关于其他可能相互矛盾的事情的想法?

更新: 我创建了一个新的空白项目来试验这个,显然要么ASP.NET被破坏了,要么就是打算以这种方式工作。 如果我在web.config中启用了FindState = false,则无法在页面级别将其重新打开。 但是,如果我将其设置为true,我可以在页面级别将其关闭。

更新更新: 我让它在空白项目中工作。不完全确定改变了什么让它突然发挥作用。我现在将web.config设置为false并将页面设置为true,并且页面通过回发保留viewstate。这意味着它是我更大,更复杂的项目所特有的。

2 个答案:

答案 0 :(得分:4)

所以答案是,如果您更改页面上的母版页而不将MasterPage的EnableViewState属性设置为页面的EnableViewState,那么您将获得问题中描述的行为。

有一个HttpModule根据应用程序其他部分设置的某些条件更改MasterPage。通过在Master页面的OnInit属性中设置MasterPage.EnableViewState = Page.EnableViewState,我能够恢复预期的行为。

答案 1 :(得分:0)

根据我在.NET 2.0中观察到的情况,在页面或应用程序级别禁用ViewState将禁用所有子元素,无论子元素在其enableviewstate属性中指定了什么。

如果您希望使用viewstate,即使是单个控件,也不能在页面或应用程序级别将enableviewstate设置为false。