2016-07-31 48 views
0

非常簡單,但我不明白爲什麼它不會起作用。 我得到了五個TextBox和一個Button,點擊以統計TextBox的數量。獲取一頁中的所有文本框

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Testing._Default" %> 
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server"> 
<asp:Label ID="Label1" runat="server" Text="Test"></asp:Label> </br> 
<asp:TextBox ID="TextBox1" runat="server" Width="40px"></asp:TextBox> 
<asp:TextBox ID="TextBox2" runat="server" Width="40px"></asp:TextBox> 
<asp:TextBox ID="TextBox3" runat="server" Width="40px"></asp:TextBox> 
<asp:TextBox ID="TextBox4" runat="server" Width="40px"></asp:TextBox> 
<asp:TextBox ID="TextBox5" runat="server" Width="40px"></asp:TextBox> 
</br> 
<asp:Button ID="Button1" runat="server" Text="Generate" OnClick="Button1_Click" /> 
</asp:Content> 

背後

protected void Button1_Click(object sender, EventArgs e) 
{ 
    var List = this.Controls.OfType<TextBox>(); 
    Label1.Text = List.Count().ToString(); 
} 

代碼,但結果返回我0

+0

也許你的'TextBoxes'在另一個像'div'的容器裏面。 –

+1

'this.Page.Form.Controls.OfType ' –

+0

@ S.Akbari嗯,這裏沒有div – BernardWong

回答

1

由於您TextBoxes是內ContentPlaceHolder所以你需要與你的ContentPlaceHolderMainContent)取代this關鍵字。這應該如你所願:

var List = (Page.Master.FindControl("MainContent") as ContentPlaceHolder) 
      .Controls.OfType<TextBox>(); 
Label1.Text = List.Count().ToString();