ここやウェブ上の他の場所で見つかったいくつかの異なる解決策を試しましたが、これまでのところ運がありません. 詳しい方が助けてくれるかもしれません...
セッション状態にコントロール コレクションとして保存しているユーザーによって動的に作成されたコントロールがたくさんあるので、すべてのポストバックでそれらを表示できます。
ユーザーが生成する各コントロールは、その中に他のコントロールを含む div です。
各コントロールには、ユーザーがコントロールを削除または複製できるボタンがあります。
ユーザーが「複製」を押すと、イベントを処理する Web メソッドを呼び出しています。
Web メソッドがコントロールが複製されていることを検出したら、そのコントロールのコピーを作成してページに追加します (別の関数がそれをコントロール コレクションに保存します (page_Unload で))。
Dim DupCtrl As Control = Nothing
Dim int As Integer = myDynControls.Count
For i = 0 To int - 1
If myDynControls(i).ID.Contains(ctrlID) Then
DupCtrl = Clone_Control(myDynControls(i))
Exit For
End If
Next
End Function
そして Clone_Control 関数:
Public Shared Function Clone_Control(OriginalControl As Object) As Object
Dim type As Type = OriginalControl.[GetType]()
Dim properties As Reflection.PropertyInfo() = type.GetProperties()
Dim retObject As [Object] = type.InvokeMember("", System.Reflection.BindingFlags.CreateInstance, Nothing, OriginalControl, Nothing)
For Each propertyInfo As Reflection.PropertyInfo In properties
If propertyInfo.CanWrite Then
propertyInfo.SetValue(retObject, propertyInfo.GetValue(OriginalControl, Nothing), Nothing)
End If
Next
Return retObject
End Function
不運にも; PropertyInfo.SetValue.... で始まる行は常に次のエラーになります。
"Exception has been thrown by the target of an invocation."
そして、InnerException を見ると:
"Cannot get inner content of dynDiv_FormCtrl_Wrapper_10432 because the contents are not literal."
これを機能させるために、誰かが私を正しい方向に向けるのを手伝ってもらえますか?
読んでくれてありがとう !