Неверный ViewState после обратной синхронизации - PullRequest
0 голосов
/ 20 сентября 2011

У меня проблема с UpdatePanel.Когда пользователь нажимает кнопку внутри панели, я получаю асинхронный PostBack, и набор вкладок jQuery повторно инициализируется.Если (после успешной первой асинхронной обратной передачи) я пытаюсь использовать кнопку или другой элемент управления вне UpdatePanel, я получаю следующую ошибку:

An error has occured on page: http://server/details.aspx for user:  at IP: 192.168.0.92
The state information is invalid for this page and might be corrupted.    at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError)
   at System.Web.UI.ViewStateException.ThrowViewStateError(Exception inner, String persistedState)
   at System.Web.UI.HiddenFieldPageStatePersister.Load()
   at System.Web.UI.Page.LoadPageStateFromPersistenceMedium()
   at System.Web.UI.Page.LoadAllState()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest()
   at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
   at System.Web.UI.Page.ProcessRequest(HttpContext context)
   at ASP.details_aspx.ProcessRequest(HttpContext context)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) Invalid viewstate. 
    Client IP: 192.168.0.92
    Port: 1707
    Referer: http://server/details.aspx
    Path: /server/details.aspx
    User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322)
    ViewState: /wEPDwULLTEwMTkxMjEwNTNkZBSW/poBumnzl2Hp6YECMfZitwnKh80rC7JEaLc28HAh,z02m+uZDqc2t7iURUsMo+CuP5x4r/SPERT297Zo+E1XXWjvhDLPLpwJMqHic8o0GS89zNWWT5HUTr8DkPJgRKqGADUP0cXLYZ+seXS2JdxB85T6LsnrZwgBZC8hKDZPFlQtPIc9U0d5WCRQJFXRIHr3YLlQmTdXqcZBd09TrgA3y+hxpMJ4pq4kFU7wA9sZ0P+YFOzCNtIadsoXxZGzz+PjePHLPu+mwBAgLdI4mXYtA5MdgrH6OaM3eZaS9dZC5vpHWdC3b+ni3SkytO1FLhR4IUCNKIh+ApVtVNbfMkYAAAiXqSJKitUpZrqb3VM/EGsoZAK63iVAIpIBWkT/TeNU49UfofDChcMdsL/MLX2LEAMPG1BLhmcxIVPWJzGdCldPk5FDie6m2Wm5SRah3oMpcltVUv0wjGOo04TLOmrb/vw5iXyXAPC0eHch60Bm2gGCxY/PKTa9A/mWIyXwnVT2Ma0mi6i9gkvsDyWVN/u/ckNQrM4yN31y1vFwXG3jP+2euwDcZ41eK4md7FM6tBFZOvR7RV2mSI4BvJliLihfcje9IEEv9/X1zuz73RZrEYKVuCN/gFJNwRDJgYia2sCo1oE3NQn5guMFk+YSg9xzMgEQ0SmejhqnfughBrnbzhFWNXbCHz/hTkeBFYRRx/k3uTDpffW4qsVTL+VyZr3b8QKLZELNCrx2wqVSpup0/Mux65WDJykvcMbOq+... 
The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or a non-white space character among the padding characters.     at System.Convert.FromBase64String(String s)
   at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)
   at System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState)
   at System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState)
   at System.Web.UI.HiddenFieldPageStatePersister.Load()

Я не совсем уверен, как решить эту проблему,все остальное внутри панели обновления на разных вкладках работает.

Ответы [ 2 ]

1 голос
/ 20 сентября 2011

это может произойти по нескольким причинам.

Прежде всего, ваши Ajax-элементы управления при обновлении создают свое собственное состояние представления, которое заменяет состояние просмотра главной страницы.

Есть некоторые решения, которые я читал на других форумах, такие как добавление

             Response.End

после выхода Ajax. Вам может потребоваться обработать исключение ThreadAbortException при использовании Response.End

Второй вариант, предложенный другим пользователем, - снять Runat с элемента формы Ajax.

Это также может произойти, когда URL-адрес обратной передачи Ajax переходит на отдельную страницу для сбора данных. Если это так, вы можете изменить URL-адрес на той же странице.

0 голосов
/ 20 сентября 2011

может быть, вы создаете на лету новые элементы управления, которые имеют форму с состоянием просмотра и поэтому ...?

...