Я застрял! Я понимаю жизненный цикл страницы и то, как мне нужно добавить динамические элементы управления на page_init, если я хочу воспользоваться преимуществом viewstate. Также я знаю, что мне следует по возможности избегать динамических элементов управления. Динамические элементы управления создаются в зависимости от объекта, созданного из настраиваемых аргументов события, отправленных из настраиваемого древовидного представления. Проблема в том, что мне нужно viewstate, поэтому мне нужно создать их в page_init, но у меня нет аргументов событий для создания объекта, который сообщает мне, какие элементы управления добавить на более поздний срок жизненного цикла. Решение...
Private Function GetEventArgs() As npTreeViewEventArgs
Dim control As Control = Nothing
Dim e As npTreeViewEventArgs = Nothing
Dim ctrlname As String = Page.Request.Params("__EVENTTARGET")
Dim args As String = Request.Params("__EVENTARGUMENT")
If ctrlname IsNot Nothing AndAlso ctrlname <> String.Empty Then
control = Page.FindControl(ctrlname)
End If
If TypeOf control Is npTreeView AndAlso Not String.IsNullOrEmpty(args) Then
e = New npTreeViewEventArgs(args)
End If
Return e
End Function
Я использую это в page_init для создания своего объекта и элементов управления. Мне это кажется очень грязным. Есть ли другой способ справиться с этим?