2012-04-26 20 views
6

Tôi có một điều khiển người dùng mà tôi đã viết và đã thêm vào một trang ASP.NET, và các chức năng tốt. Tuy nhiên, tôi đang cố gắng tham chiếu một thuộc tính trong điều khiển tùy chỉnh đó từ mã phía sau, trên Page_Load, nhưng không thể, bởi vì biến, có thể truy cập được, đối với cá thể là null.ASP.NET User Control instance là null khi được tham chiếu trên Page_Load trên mã trang sau

Điều này có bình thường đối với các điều khiển của người dùng và Page_Load không? Và nếu có, làm cách nào tôi có thể tham chiếu đến thể hiện của điều khiển để truy cập các thuộc tính công khai của nó? Đây là điều tôi cần làm trước khi trang được hiển thị, để khởi tạo một số biến.

+0

Bạn có thể tham khảo Điều khiển người dùng của mình bằng phương pháp Page_Load. Vui lòng hiển thị đánh dấu của bạn và mã của bạn phía sau. Trong ví dụ đánh dấu, vui lòng bao gồm các thẻ <% @ Register%>. – Mark

Trả lời

0

Bạn có thể truy cập điều khiển người dùng của mình từ sự kiện Page_PreRender.

Bạn có thể tìm thêm tài liệu về page life cycle in asp.net here.

+0

Cảm ơn, điều đó dường như đã làm được điều đó! –

15

Tôi gặp vấn đề tương tự và hóa ra tôi đã đăng ký kiểm soát tùy chỉnh không chính xác.

Đúng Định nghĩa:

<%@ Register Src="PeriodControl.ascx" TagName="PeriodControl" TagPrefix="ucs" %> 

sai Definition:

<%@ Register TagPrefix="ucs" Namespace="MyWebsite" Assembly="MyWebsite" %> 

Sự khác biệt duy nhất là để tham khảo các file ascx trực tiếp thay vì sự kiểm soát trong việc lắp ráp. Đi con số !?

+2

Bạn sẽ làm gì nếu điều khiển người dùng thực sự trong một hội đồng (ascx nằm trong tệp DLL và không có trong trang web). Tôi thường sử dụng một dự án triển khai web để biên dịch tất cả các điều khiển người dùng thường được sử dụng của tôi thành một DLL. VS2012 không hỗ trợ kiểu dự án đó, nhưng bạn có thể biên dịch một trang web thành một assembly và VS sẽ đọc nó .. nhưng tôi không thể tìm ra cách đăng ký chính xác nên các điều khiển trên các điều khiển người dùng không phải là rỗng. –

+0

Tôi không chắc chắn. Nếu nó được tham chiếu từ một dll, có thể nó sẽ xuất hiện trong hộp công cụ của bạn và bạn có thể kéo nó vào trang của bạn. Sau đó VS sẽ tạo thẻ đăng ký cho bạn :) Đó là tất cả những gì tôi có thể nghĩ đến. Hy vọng nó giúp ... –

+0

Tôi đã đấu tranh trong 2 giờ và cuối cùng tôi tìm thấy giải pháp của bạn, nó hoạt động như một sự quyến rũ. – gangt