Có một sự khác biệt giữa hai kịch bản sau đây:Làm cách nào để truy cập các điều khiển bên trong trang cái lồng nhau? tại sao nó hoạt động khác với các trang nội dung?
(1) Truy cập vào một tài sản trên một trang chủ từ một đứa trẻ thường xuyên
(2) Truy cập vào một tài sản trên một trang chủ từ một trang chủ lồng nhau
tôi cố gắng để truy cập vào một textbox trong trang chủ từ một trang nội dung như thế này:
TextBox a;
a = (TextBox)Master.FindControl("ayyash"); // Master is declared in MasterType directive
defaultTextbox.Text = a.Text; // defaultTextBox is a textbox control inside default.aspx
nó hoạt động, nhưng sau đó khi tôi áp dụng phương pháp tương tự trên một trang chủ lồng nhau:
TextBox a;
a = (TextBox)Master.FindControl("ayyash"); // Master is declared in MasterType directive
myTextBox.Text = a.Text; // myTextBox is a textbox control inside child.master
điều này không có tác dụng, tôi có thiếu gì đó không? Tôi gọi cả hai mã bên trong điều khiển page_load handler ...
Tôi cũng nhận thấy rằng tôi không thể đặt giá trị hộp văn bản bên trong trang cái lồng nhau từ mã phía sau, chắc chắn có điều gì đó im mất tích, nó là gì? Để làm sáng tỏ vấn đề này, đây là một ví dụ:
Nested Master Page:
<%@ Master Language="C#" MasterPageFile="MasterPage.master" AutoEventWireup="false" CodeFile="MasterPage2.master.cs" Inherits="MasterPage2" %>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:textbox id="tx2" runat="server" text="this is two"></asp:textbox>
<asp:contentplaceholder id="newstuff" runat="server"></asp:contentplaceholder>
</asp:Content>
Mã đằng sau:
Response.Wrote(tx2.Text);
tôi nhận được NOTHING, tại sao tôi đã bỏ lỡ những gì? lưu ý rằng tôi cũng đã cố gắng kiểm soát đệ quy tìm:
String str = ((TextBox)((Content)FindControl("Content2")).FindControl("tx2")).Text;
vẫn không có gì
Nếu trang cái lồng nhau không gọi Page_Load, điều gì đó khác cũng sai vì tất cả các phương thức Page_Load nên được gọi (trên trang chính, trang cái lồng nhau và trang nội dung). Tôi đã thêm một số thông tin khác vào câu trả lời ban đầu của mình. –