Tôi đã thử một vài giải pháp khác nhau được tìm thấy ở đây và ở nơi khác trên web mà không cần may mắn cho đến nay. Có thể một trong những bạn hiểu biết nhiều có thể giúp đỡ ...Làm thế nào để sao chép/sao chép một điều khiển (với điều khiển con) bằng cách sử dụng asp.net?
Tôi có một loạt các điều khiển được tạo động bởi người dùng mà tôi đang lưu trữ dưới dạng bộ sưu tập ở trạng thái phiên để tôi có thể hiển thị chúng trên mọi bài đăng .
Mỗi điều khiển mà người dùng tạo là div với các điều khiển khác bên trong nó.
Tôi có một nút trên mỗi điều khiển cho phép người dùng xóa kiểm soát hoặc sao chép nó.
Khi người dùng nhấn "Trùng lặp", tôi đang gọi phương thức web của tôi xử lý sự kiện.
Khi phương pháp web của tôi tìm thấy sự kiểm soát được nhân đôi, tôi muốn tạo một bản sao của điều khiển và thêm nó vào trang (một giao dịch với chức năng lưu nó vào bộ sưu tập điều khiển (trên 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
Và chức năng 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
Thật không may, những dòng lệnh bắt đầu PropertyInfo.SetValue .... luôn lỗi với:
"Exception has been thrown by the target of an invocation."
và khi tôi nhìn vào InnerException:
"Cannot get inner content of dynDiv_FormCtrl_Wrapper_10432 because the contents are not literal."
bất cứ ai có thể vui lòng giúp đỡ chỉ cho tôi đi đúng hướng để làm việc này?
Cảm ơn bạn đã đọc!
Cảm ơn lời khuyên của bạn, nhưng tôi thực sự cần làm điều này thông qua phương pháp web của tôi. Tôi không thể tin rằng nó rất khó để đơn giản là tạo ra một bản sao của một điều khiển! – wotney