1

我正在尝试通过单击按钮清除表单,这就是我现在所在的位置:

     ContentPlaceHolder mpContentPlaceHolder;
        mpContentPlaceHolder =
   (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");

        foreach (Control ctrl in mpContentPlaceHolder.Controls)
        {
            lblMessageX.Text = ctrl.ToString();
            if (ctrl is TextBox)
                ((TextBox)ctrl).Text = string.Empty;
            else if (ctrl is DropDownList)
                ((DropDownList)ctrl).ClearSelection();
        }

它只循环一次,并找到: System.Web.UI.LiteralControl

是不是在正确的地方搜索?

我的模型看起来像:

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
 <asp:Accordion   
    ID="Accordion1"   
    CssClass="accordion"  
    HeaderCssClass="accordionHeader"  
    HeaderSelectedCssClass="accordionHeaderSelected"  
    ContentCssClass="accordionContent"   
    runat="server">  

<Panes >
<asp:AccordionPane runat="server" >
    <asp:DropDownList ID="ddlOrg" runat="server"  AutoPostBack="true" CssClass="myinputstyle"
                   OnSelectedIndexChanged="ddlOrg_SelectedIndexChanged" />  
      <asp:TextBox ID="txtCase" runat="server" CssClass="myinputstyleS" MaxLength="8" />  
//and so on and so forth
4

1 回答 1

1

您需要进行递归搜索以获取页面上的所有控件,因为并非所有控件都位于 ContentPlaceHolder 下方。相反,它包含一些本身包含其他控件的控件。

Content Place Holder
-->LiteralControl
   -->Other Control 1
   -->Other Control 2
   -->Other Control 3
      -->Maybe another level 1
      -->Maybe another level 2
   -->Other Control 4

LiteralControl.Controls 将返回“其他控件 1”到 4,但不会返回“可能是另一个级别 1”或“可能是另一个级别 2”。要获得这些,您需要调用“其他控件 3”。控件

在调试器中四处寻找以查看确切的层次结构。

于 2013-07-19T19:50:42.823 回答