Để thực sự trả lời câu hỏi của bạn, nhiều như mọi người khác dường như không muốn bạn làm điều này, và tôi đồng ý ... Tôi đã làm điều này trước đây.
Điều đầu tiên tôi muốn làm là làm cho trang của bạn triển khai giao diện.
Trong kiểm soát:
IVansFannelDataProviderPage provider = this.Page as IVansFannelDataProviderPage; if (provider != null) { //grab data from interface } else throw YouCantPutThisControlOnThisKindOfPageException();
Nó không phải là cách thanh lịch nhất để làm điều đó, nhưng khi chúng ta đã có rất nhiều điều khiển muốn chia sẻ một đối tượng rất tốn kém này phù hợp với những hóa đơn.
Tính năng này hoạt động tốt nhưng điều khiển của bạn không thể sử dụng được trên các trang không triển khai giao diện - điều đó làm cho các điều khiển được kết hợp chặt chẽ với trang của bạn. Mọi người khác nói rằng để trang có được dữ liệu từ các điều khiển là chính xác; bạn đặt các điều khiển trên trang, chứ không phải các trang trong các điều khiển.
Bạn nên có lý do rất tốt để làm điều đó. Đối với chúng tôi: tải của đối tượng được chia sẻ là rất tốn kém, và có tải trang/lưu nó không có vấn đề gì kiểm soát được làm việc trên đối tượng đó là khá hữu ích. Thật quá tệ khi nhiều trang không thực sự triển khai giao diện phải được trang trí để cung cấp một số loại hỗ trợ hoặc hỗ trợ proxy chỉ để có được các điều khiển hoạt động, và làm cho các trang và kiểm soát nhiều ít sử dụng lại được.
Nếu tôi phải làm điều này một lần nữa, tôi muốn trang gửi dữ liệu đến các điều khiển có sự kiện, có lẽ thông qua phản ánh nếu tôi cần phải lười biếng.
Đây là câu trả lời tuyệt vời nhưng tôi không thể sử dụng vì điều khiển được tải động. Có lẽ tôi sẽ sử dụng các lĩnh vực ẩn. Cảm ơn bạn. – VansFannel
Bạn nên sử dụng ViewState để giữ trạng thái điều khiển. – Oded
Và làm cách nào tôi có thể giữ các giá trị của biểu tình công khai trên ViewState? Tôi đang cố gắng làm điều đó, nhưng myIntValue luôn bằng không. – VansFannel