Каковы возможные ситуации, в которых .net Viewstate может перестать работать?

StackOverflow https://stackoverflow.com/questions/428870

  •  06-07-2019
  •  | 
  •  

Вопрос

Рассмотрим следующий код:

    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

Этот код не работает на определенной странице в моем приложении.Viewstate не отключен в директиве Page.Я не могу понять, что происходит.:\

О, я только что понял это.Посмотрим, заметите ли вы это.

.<

Это было полезно?

Решение

Понял это, кто-то изменил событие Page_Load на обработку Page.Init

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init

Другие советы

Вы также можете отключить viewstate из конфигурационного файла.

<configuration>
  <appSettings>
    <Pages EnableViewState="false" />
  </appSettings>
</configuration>

Вы УВЕРЕНЫ, что делаете обратную отправку?

Написано ли в нем "Viewstate пуст"?Или просто ничего?

Поскольку вы не ответили на свой собственный пост...

Я бы сказал, что вы проверяете IsPostBack и получаете доступ к ViewState на неправильных этапах:

Handles Me.Init

Это должно быть

Handles Me.Load

верно?


Для устранения таких головных болей в ASP.NET Я также хотел бы добавить, что трассировка can часто очень помогает.

Вы можете включить трассировку, добавив это в web.config:

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

Это добавит трассировку стека и еще много чего в конец каждой страницы, так что вы сможете отследить выполнение и (надеюсь) выяснить проблему.

В моем случае я записывал данные в ViewState на Page_Init .Эти данные хорошо отображались на Page_Load и Page_PreRender, но они не сохранялись на странице в конце жизненного цикла.После обратной передачи ViewState был пуст.

Итак, убедитесь, что вы пишете в ViewState ПОСЛЕ Page_Init .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top