我有一个母版页master.page。
我有一个子页面default.aspx,即inheirts master。
如何执行以下操作并实际查找控件。在下面的代码中,我从未找到我的面板。
codebehind - content-page
foreach (Panel pnl in this.Page.Controls.OfType<Panel>())
{
if (pnl.ID.ToUpper() == texthi.ToUpper().Replace(" ", ""))
{
pnl.Visible = true;
}
else
{
pnl.Visible = false;
}
}
aspx - content-page
<%@ Page Title="" Language="C#" MasterPageFile="~/secure/Wizard.master" AutoEventWireup="true"
CodeFile="AddWarranty.aspx.cs" Inherits="secure_Warranties_AddWarranty" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder_NavigationPanel"
runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<asp:ScriptManager runat="server" ID="sm1">
</asp:ScriptManager>
<div id="header">
<p id="layoutdims">
</p>
</div>
<div class="colmask leftmenu">
<div class="colleft">
<div class="col1">
<asp:Panel runat="server" ID="VehicleInformation" Visible="true">
<legend>VEHICLE INFORMATION</legend>
</asp:Panel>
<asp:Panel runat="server" ID="CustomerInformation" Visible="false">
<legend>CUSTOMER INFORMATION</legend>
</asp:Panel>
</div>
答案 0 :(得分:0)
原因是Enumerable.TypeOf
看起来不是递归到子控件而只是顶级容器。由于您在页面ControlCollection
上使用它,因此您只能找到位于页面顶部的面板。但是你的面板在其他div中。
让父div
(使用class="col1"
)runat=server
(或使用Panel
)并在代码隐藏中访问它:
foreach (Panel pnl in div.Controls.OfType<Panel>())
{
// ...
}