Asp.net 在服务器控件中使用控件状态
我有一个服务器控件,试图将属性保存为控件状态,但由于某些原因,这些属性无法在部分回发中持久化 psuedo代码如下所示:Asp.net 在服务器控件中使用控件状态,asp.net,vb.net,ajaxcontroltoolkit,servercontrols,Asp.net,Vb.net,Ajaxcontroltoolkit,Servercontrols,我有一个服务器控件,试图将属性保存为控件状态,但由于某些原因,这些属性无法在部分回发中持久化 psuedo代码如下所示: Public Class FileUpload Inherits ScriptControl Implements INamingContainer, IPostBackEventHandler Public Property newFileExt() As String Get Dim foundList A
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
此控件上有一个asyncFileUpload ajaxcontroltoolkit控件和一个按钮。我有一个上传完成的事件:
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是complete,它应该设置控件状态。然后,当用户单击按钮时,它应该读取它。通过调试,我可以看到它在UploadedComplete事件中设置正确,但在读取时设置为null。这是由于页面的循环还是其他原因
谢谢
杰森
编辑
我找到了页面循环运行的路径:
因此,据我所知,asyncFileUpload应用程序存在ViewState/ControlState问题。我最后只是使用了会话 newGetPath声明在哪里?抱歉,这是一个输入错误。我编辑了我原来的帖子。