ASP.Net PlaceHolder、Panel等控制項未實現INamingContainer,導致FindControl無效

來源:互聯網
上載者:User

代碼如下: 複製代碼 代碼如下:Panel spnButtons = new Panel();
Button btn = new Button();
btn.ID = "btn1";
spnButtons.Controls.Add(btn);
// 輸出True,表示沒有找到控制項
Response.Write(spnButtons.FindControl(btn.ID) == null);

而如果是下面的代碼就可以了:複製代碼 代碼如下:Panel spnButtons = new Panel();
Page.Controls.Add(spnButtons);// 建立Panel後把它加入Page

Button btn = new Button();
btn.ID = "btn1";
spnButtons.Controls.Add(btn);
// 輸出False,表示找到了控制項
Response.Write(spnButtons.FindControl(btn.ID) == null);

或者使用Repeater也可以: 複製代碼 代碼如下:Repeater spnButtons = new Repeater();

Button btn = new Button();
btn.ID = "btn1";
spnButtons.Controls.Add(btn);
// 輸出False,表示找到了控制項
Response.Write(spnButtons.FindControl(btn.ID) == null);

查了一下Panel是繼承於WebControl,而WebControl的定義是:
public class WebControl : Control, IAttributeAccessor
{}
Repeater的定義是:
public class Repeater : Control, INamingContainer
{}
難道是因為Repeater實現了INamingContainer的原因嗎?
我又自訂了一個類,繼承自Panel,並實現了INamingContainer,可以找到控制項了: 複製代碼 代碼如下:public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
myPanel spnButtons = new myPanel();

Button btn = new Button();
btn.ID = "btn1";
spnButtons.Controls.Add(btn);

Response.Write(spnButtons.FindControl(btn.ID) == null);
}

}

public class myPanel : Panel, INamingContainer
{
public myPanel():base()
{
}
}

上,ASP.Net中,PlaceHolder、Panel等控制項未實現INamingContainer,導致FindControl無效
如果把這些控制項加入到實現了INamingContainer的父控制項中,或者用子類實現INamingContainer,就可以使FindControl有效了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.