У меня есть серверный элемент управления, который я пытаюсь сохранить для сохранения свойств в качестве состояний управления, но по какой-то причине свойства не сохраняются на частичных обратных передачах.с использованием состояний управления в управлении сервером
Код псевдо выглядит следующим образом:
Public Class FileUpload
Inherits ScriptControl
Implements INamingContainer, IPostBackEventHandler
Public Property newFileExt() As String
Get
Dim foundList As String = DirectCast(ViewState(Me.UniqueID & "_fileExt"), String)
If foundList IsNot Nothing Then
Return foundList
Else
Return String.Empty
End If
End Get
Set(ByVal value As String)
ViewState(Me.UniqueID & "_fileExt") = value
End Set
End Property
Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
MyBase.OnInit(e)
Page.RegisterRequiresControlState(Me)
End Sub
Protected Overrides Function SaveControlState() As Object
Dim controlState(6) As Object
controlState(0) = MyBase.SaveControlState()
controlState(1) = newFileExt
Return controlState
End Function
Protected Overrides Sub LoadControlState(ByVal savedState As Object)
Dim controlState() As Object
controlState = CType(savedState, Object)
MyBase.LoadControlState(controlState(0))
newFileExt = CType(controlState(1), String)
End Sub
end class
На этом элементе управления является контроль ajaxcontroltoolkit asyncFileUpload и кнопка. У меня есть событие для загрузки:
Protected Sub SaveUploadedFile(ByVal sender As Object, ByVal e As AjaxControlToolkit.AsyncFileUploadEventArgs) Handles asyncFileUpload.UploadedComplete
newFileExt= "Some Value"
end sub
Protected Sub bntSelectResults_click(ByVal sender As Object, ByVal e As EventArgs) Handles bntSelectResults.Click
If (newFileExt= "") Then
'this always returns as empty
End If
end sub
Итак, UploadedComplete завершен, он должен установить состояние элементов управления. тогда, когда пользователь нажимает кнопку, он должен ее прочитать. Посредством отладки я вижу, что он правильно установлен в событии UploadedComplete, но при чтении имеет значение null. Это связано с циклом страницы или чем-то еще?
Благодаря Джейсона
EDIT
Я начертил путь для того, как цикл страницы выполняется:
Пользователь нажимает кнопку просмотра инструмент для загрузки асинхронной файл и выбирает файл. Это приводит к запуску процесса загрузки
a. OnInit получает звание
b. LoadControlState получает вызов
c. OnLoad получает вызов
d. asyncFileUpload.UploadedComplete вызывается и я устанавливаю свойство newFileExt здесь.
e. Вызывается SaveControlState. newFileExt установлен правильно
Пользователь нажимает кнопку на элементе управления, который инициирует другую частичную обратную передачу/обновление панели обновления a. OnInit получает звание
b. LoadControlState вызывается. Я вижу, что свойство newFileExt не установлено.
c. OnLoad получает вызов
d. Вызывается событие щелчка кнопок и считывается свойство (которое больше не установлено)
e. SaveControlState вызывается и цикл заканчивается
Где * newGetPath * заявлено? –
К сожалению, это была опечатка. Я редактировал свой оригинальный пост. – jason