1

考虑以下代码:

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
        If Page.IsPostBack Then
            If ViewState("test") IsNot Nothing Then
                Response.Write((ViewState("test").ToString))
            Else 
                Response.Write("Viewstate is empty.")
            End If
        Else
            ViewState("test") = "viewstate is working."
        End If
    End Sub

此代码不适用于我的应用程序中的特定页面。在 Page 指令中没有关闭 Viewstate。我不知道发生了什么事。:\

哦,我刚刚想通了。看看你是否注意到它。

.<

4

5 回答 5

3

想通了,有人改变了 Page_Load 事件来处理 Page.Init

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
于 2009-01-09T17:22:24.867 回答
1

您也可以从配置文件中关闭视图状态。

<configuration>
  <appSettings>
    <Pages EnableViewState="false" />
  </appSettings>
</configuration>
于 2009-01-09T17:06:11.437 回答
1

您确定要回发吗?

它写“视图状态为空”吗?还是什么都没有?

于 2009-01-09T17:12:55.790 回答
1

由于您没有回答自己的帖子...

我会说您正在检查 IsPostBack 并在错误的阶段访问 ViewState :

Handles Me.Init

那应该是

Handles Me.Load

对?


对于在 ASP.NET 中调试此类令人头疼的问题,我还想补充一点,跟踪通常会很有帮助。

您可以通过将其添加到 web.config 来启用跟踪:

<configuration>
  <system.web>
    <trace enabled="true" pageOutput="true" requestLimit="40" localOnly="false"/>
  </system.web>
</configuration>

这会将堆栈跟踪和诸如此类的附加到每个页面的末尾,因此您可以跟踪执行并(希望)找出问题。

于 2009-01-09T17:24:12.727 回答
1

就我而言,我正在将数据写入 Page_Init 上的 ViewState。此数据在 Page_Load 和 Page_PreRender 上显示良好,但在生命周期结束时并未持久保存到页面。回发后 ViewState 为空。

因此,请确保在 Page_Init 之后写入 ViewState。

于 2010-08-30T06:37:12.697 回答