У меня возникла проблема в моем приложении ASP.NET с обновлением страницы Viewstate и F5.Проблема с LoadViewState после обновления страницы F5 - Не удалось загрузить viewstate
Если после переходе с одной страницы на другую, я сразу же нажать F5, я получаю следующее сообщение об ошибке:
System.InvalidCastException
"Unable to cast object of type 'System.Web.UI.Triplet'
to type 'System.Web.UI.Pair'."
Это приводит к следующему за исключением отображаемого на странице:
HttpException (0x80004005): Failed to load viewstate. The control tree
into which viewstate is being loaded must match the control tree that
was used to save viewstate during the previous request.
For example, when adding controls dynamically, the controls added during a
post-back must match the type and position of the controls added during
the initial request.]
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +310
System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +136
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +224
System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +136
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +224
System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +136
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +224
System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +136
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +224
System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +136
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +224
System.Web.UI.Page.LoadAllState() +439
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1092
Точка при которой он выходит из строя, находится в избыточном методе LoadViewState для пользовательского управления меткой, когда он вызывает родительский LoadViewState
System.Web.UI.WebControls.Label.LoadViewState(ByVal savedState As Object)
Объект savedState представляется для совершенно другого элемента управления (выпадающего списка), который является System.Web.UI.Triplet, а не объектом System.UI.Pair, ожидаемым элементом управления Label.
Если я делаю то же самое, используя другую страницу в том же приложении, страница загружается штрафом после обратной передачи F5. Две веб-страницы наследуются от одного и того же базового класса и используют одни и те же пользовательские элементы управления. Страница, вызывающая проблемы, не содержит динамически добавленных элементов управления.
Отладка процесса, похоже, что событие LoadViewState не запускается после обратной передачи F5 для элементов управления на странице, которая успешно загружается. SaveViewState запускается в обоих случаях.
Любые идеи, почему событие LoadViewState будет запущено на одну страницу, но не на другую? Я довольно новичок в ASP.NET, и я до сих пор не понимаю, как работает ViewState.