2008-08-15 22 views
5

Tôi khá mới với ASP.NET và cố gắng tìm hiểu cách mọi thứ được thực hiện. Tôi đến từ một nền C# để phần code-behind dễ dàng, nhưng suy nghĩ như một nhà phát triển web là không quen thuộc.Làm cách nào để chuyển dữ liệu từ trang aspx sang cửa sổ bật lên kiểu ascx?

Tôi có trang aspx chứa một hộp kiểm tra. Tôi có một nút được mã hóa thông qua sự kiện Button_Click để thu thập danh sách các hàng được kiểm tra và tạo biến phiên trong danh sách đó. Nút tương tự được tham chiếu (thông qua TargetControlID) bởi ModalPopupExtender của trang ascx của tôi, điều khiển bảng điều khiển trên trang ascx.

Khi nút được nhấp, cửa sổ bật lên phương thức mở ra nhưng sự kiện Button_Click sẽ không bao giờ được kích hoạt, vì vậy phương thức không nhận được dữ liệu phiên của nó.

Vì hai trang riêng biệt, tôi không thể gọi ModalPopupExtender từ mã aspx.cs, tôi không thể truy cập danh sách hộp kiểm từ mã ascx.cs và tôi không thấy cách cư trú biến phiên của tôi và sau đó lập trình kích hoạt một số nút hoặc điều khiển ẩn khác mà sau đó sẽ mở popup phương thức của tôi.

Mọi suy nghĩ?

Trả lời

3

Tất cả tệp usercontrol (.ascx) là tập hợp các điều khiển mà bạn đã nhóm lại với nhau để cung cấp một số chức năng có thể sử dụng lại. Các điều khiển được xác định trong nó vẫn được thêm vào bộ sưu tập kiểm soát của trang (.aspx) làm tăng thời gian tồn tại của trang. ModalPopupExtender sử dụng javascript và dhtml để hiển thị và ẩn các điều khiển trong phía máy khách usercontrol. Những gì bạn đang thấy là sự kiện nhấp chuột đang được xử lý phía máy khách bởi ModalPoupExtender và nó sẽ hủy đăng lại cho máy chủ. Đây là hành vi mặc định theo thiết kế. Bạn chắc chắn có thể truy cập bộ sưu tập kiểm soát của trang từ mã phía sau của usercontrol của bạn mặc dù bởi vì nó là tất cả các phần của cùng một cây điều khiển. Chỉ cần sử dụng phương thức FindControl (xxx) của bất kỳ điều khiển nào để tìm kiếm con của nó mà bạn cần.

0

Xin lỗi, nhưng tôi đã nhầm lẫn. Bạn không thể gọi trực tiếp ascx, vì vậy ...

Mã phương thức mà bạn đang gọi từ trong cùng một trang, như bảng điều khiển ẩn, v.v.

Hoặc là một trang aspx khác mà bạn đang gọi trên một sự kiện nhấp chuột?

1

Sau một số nghiên cứu sau câu trả lời của DancesWithBamboo, tôi đã tìm ra cách làm cho nó hoạt động.
Một ví dụ tham khảo trang ascx của tôi trong trang aspx của tôi:

<uc1:ChildPage ID="MyModalPage" runat="server" /> 

Các aspx code-behind để lấy và mở ModalPopupExtender (tên modalPopup) sẽ trông như thế này:

AjaxControlToolkit.ModalPopupExtender mpe = 
    (AjaxControlToolkit.ModalPopupExtender) 
      MyModalPage.FindControl("modalPopup"); 
mpe.Show(); 
Các vấn đề liên quan