I have to find a Control
in an aspx page bound to a master page.
The master page contains:
<asp:ContentPlaceHolder ID="MainContent" runat="server"/>
The content page contains:
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
</asp:Content>
I added a Table
with ID
formtable
as a child of Content2
.
I tried to use the following code to access the Table
, but the code returns null
:
protected void Ok_Click(object sender, EventArgs e)
{
Table tblForm = this.FindControl("MainContent").FindControl("formtable") as Table;
}
How can I access the Table
?
Try this
Table tblForm = this.Master.FindControl("MainContent").FindControl("formtable") as Table;
Checkout this Control ID Naming in Content Pages for more details
Working with findControl() cause complications sometimes. It is easier to define a public property for that control in master page and then access control through the property.
you should add this line in child page:
<%@ MasterType VirtualPath="~/MasterPage.master" %>
What context are you in when you are trying to do this? Are you in the codebehind of the individual page?
If you are it should be Content1.FindControl("formtable") as Table
and that would be it.
来源:https://stackoverflow.com/questions/3720590/find-a-control-on-a-page-with-a-master-page