Я застрял!Я понимаю жизненный цикл страницы и то, как мне нужно добавить динамические элементы управления на 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 для создания моего объекта и элементов управления.Это очень грязно для меня.Есть ли другой способ справиться с этим?