2016-07-31 3 views
0

매우 간단하지만 작동하지 않는 이유를 알 수 없습니다. 나는 5 개가 TextBox이고 하나는 Button입니다. TextBox의 수를 클릭하십시오.페이지의 모든 텍스트 상자 가져 오기

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

뒤에

<%@ 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> 

코드 그러나 결과는 나에게 0을 반환합니다. 당신의 TextBoxes 이후

+0

아마도'TextBoxes'는'div'와 같은 다른 컨테이너 안에 있습니다. –

+1

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

+0

@ S.Avari 안녕하세요 여기 div가 없습니다 – BernardWong

답변

1

ContentPlaceHolder 그래서 당신은 당신이 ContentPlaceHolder (MainContent)로 this 키워드를 교체 할 필요가 내부입니다. 이것은 당신이 원하는대로 작동합니다 :

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