2016-07-31 21 views
0

Sehr einfach, aber ich kann nicht herausfinden, warum es nicht funktioniert. Ich habe fünf TextBox und eine Button, klicken Sie, um die Anzahl der TextBox zu zählen. Erhalten Sie alle TextBoxen in einer Seite

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

-Code hinter

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

Aber das Ergebnis zurückgeben mich 0.

+0

Wahrscheinlich sind Ihre 'TextBoxen' in einem anderen Container wie' div'. –

+1

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

+0

@ S.Akbari hmm gibt es keine div hier – BernardWong

Antwort

1

Da Ihr TextBoxes sind in einem ContentPlaceHolder so müssen Sie mit Ihrem ContentPlaceHolder (MainContent) das this Schlüsselwort ersetzen. Dies sollte funktionieren, wie Sie wollen:

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