到目前为止,我已经尝试了在这里和网络上其他地方找到的一些不同的解决方案,但没有运气。也许你们中的一个知识渊博的人可以提供帮助......
我有一堆由用户动态创建的控件,我将它们存储为会话状态中的控件集合,因此我可以在每次回发时显示它们。
用户生成的每个控件都是一个 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."
任何人都可以帮我指出正确的方向来完成这项工作吗?
谢谢阅读 !