2008-08-13 8 views
5

Tôi có một điều khiển tùy chỉnh triển khai IPostBackEventHandler. Một số sự kiện phía máy khách gọi __doPostBack (controlID, eventArgs).RaisePostBackEvent không kích hoạt

Điều khiển được thực hiện trong hai điều khiển người dùng khác nhau. Trong một điều khiển, RaisePostBackEvent được kích hoạt ở phía máy chủ khi yêu cầu __doPostBack. Trong điều khiển khác, RaisePostBackEvent không bao giờ được gọi. Tôi đã kiểm tra thông số __EVENTTARGET và nó khớp với ClientID của điều khiển ... tôi có thể tìm cách khắc phục sự cố này ở đâu khác?

Trả lời

1

Có rất nhiều cách mà điều này có thể bị xáo trộn. Bạn có thêm điều khiển cho trang động trong mã phía sau không? Nếu có rất nhiều lần UniqueID của bạn có thể tắt - ngay cả khi id của khách hàng bằng nhau. Bạn có một mẫu mã có thể chứng minh những gì bạn đang làm không?

+0

(Moved nhận xét) - Vâng, tôi cảm thấy loại ngu ngốc ... đó là một vấn đề đơn giản - Tôi nghĩ UniqueID của điều khiển phù hợp __EVENTARGS nhưng do một số goofiness JavaScript trên một phần của tôi, nó đã có một $, nơi một gạch dưới nên có được. Đó là một UniqueID cực kỳ dài nên dễ bỏ qua. –

0

Kiểm tra kỹ xem nó có thực sự là nguồn gốc của lớp UserControl không, chứ không phải WebControl.
Điều này khiến tôi ngạc nhiên nhiều lần. Nếu bạn cần sử dụng WebControl để tạo kiểu, bạn cần cho phép điều khiển của bạn triển khai INamingContainer. (Đừng lo lắng, một giao diện đánh dấu nó)

Vì vậy ..

public class MyControl : UserControl {} 

Hoặc

public class MyControl : WebControl, INamingContainer {}