C# 在aspx页面中查找文本

C# 在aspx页面中查找文本,c#,asp.net,C#,Asp.net,我的网页上有42个文本及其ID,如ltr1、ltr2、…、ltr41、ltr42。我想在for循环中更改它们的文本属性 以下是html代码: <table class="calendar"> <tr> <td> <div class="day"> <asp:Literal ID="day1" runat="server"> &

我的网页上有42个文本及其ID,如ltr1、ltr2、…、ltr41、ltr42。我想在for循环中更改它们的文本属性

以下是html代码:

<table class="calendar">
    <tr>
        <td>
            <div class="day">
                <asp:Literal ID="day1" runat="server">
                </asp:Literal></div>
        </td>
    </tr>
 </table>

c#


for(int i=1;i您可以使用类型的
加载集合中的所有文本,稍后您可以修改它们的文本属性

var literals = this.Page.Controls.OfType<Literal>();
foreach (Literal literal in literals)
{
    literal.Text = "Your Text";
}
var literals=this.Page.Controls.OfType();
foreach(文本中的文本)
{
literal.Text=“您的文本”;
}
编辑:

var literals = Page.Master.FindControl("cphContent").Controls.OfType<Literal>();
foreach (Literal literal in literals)
{
     literal.Text = "Your Text";
}
由于页上的另一个控件中有控件,因此需要对控件进行嵌套搜索。可以尝试以下扩展方法

首先为扩展方法创建一个类,如下所示:

public static class ExtensionMethod
{
    public static IEnumerable<Control> FindAll(this ControlCollection collection)
    {
        foreach (Control item in collection)
        {
            yield return item;

            if (item.HasControls())
            {
                foreach (var subItem in item.Controls.FindAll())
                {
                    yield return subItem;
                }
            }
        }
    }

    public static IEnumerable<T> FindAll<T>(this ControlCollection collection) where T : Control
    {
        return collection.FindAll().OfType<T>();
    }
}
公共静态类扩展方法
{
公共静态IEnumerable FindAll(此ControlCollection集合)
{
foreach(集合中的控制项)
{
收益回报项目;
if(item.HasControls())
{
foreach(item.Controls.FindAll()中的var子项)
{
收益回报子项;
}
}
}
}
公共静态IEnumerable FindAll(此ControlCollection集合),其中T:Control
{
返回集合。FindAll()。of type();
}
}
以后您可以像这样使用它:

protected void Button1_Click(object sender, EventArgs e) 
{
    var literals = this.Controls.FindAll<Literal>();
    foreach (Literal literal in literals)
    {
        literal.Text = "Your Text";
    }
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
var literals=this.Controls.FindAll();
foreach(文本中的文本)
{
literal.Text=“您的文本”;
}
}

您可以使用类型为
加载集合中的所有文字,然后可以修改其文本属性

var literals = this.Page.Controls.OfType<Literal>();
foreach (Literal literal in literals)
{
    literal.Text = "Your Text";
}
var literals=this.Page.Controls.OfType();
foreach(文本中的文本)
{
literal.Text=“您的文本”;
}
编辑:

var literals = Page.Master.FindControl("cphContent").Controls.OfType<Literal>();
foreach (Literal literal in literals)
{
     literal.Text = "Your Text";
}
由于页上的另一个控件中有控件,因此需要对控件进行嵌套搜索。可以尝试以下扩展方法

首先为扩展方法创建一个类,如下所示:

public static class ExtensionMethod
{
    public static IEnumerable<Control> FindAll(this ControlCollection collection)
    {
        foreach (Control item in collection)
        {
            yield return item;

            if (item.HasControls())
            {
                foreach (var subItem in item.Controls.FindAll())
                {
                    yield return subItem;
                }
            }
        }
    }

    public static IEnumerable<T> FindAll<T>(this ControlCollection collection) where T : Control
    {
        return collection.FindAll().OfType<T>();
    }
}
公共静态类扩展方法
{
公共静态IEnumerable FindAll(此ControlCollection集合)
{
foreach(集合中的控制项)
{
收益回报项目;
if(item.HasControls())
{
foreach(item.Controls.FindAll()中的var子项)
{
收益回报子项;
}
}
}
}
公共静态IEnumerable FindAll(此ControlCollection集合),其中T:Control
{
返回集合。FindAll()。of type();
}
}
以后您可以像这样使用它:

protected void Button1_Click(object sender, EventArgs e) 
{
    var literals = this.Controls.FindAll<Literal>();
    foreach (Literal literal in literals)
    {
        literal.Text = "Your Text";
    }
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
var literals=this.Controls.FindAll();
foreach(文本中的文本)
{
literal.Text=“您的文本”;
}
}

Page.FindControl()方法怎么样


for(inti=1;iPage.FindControl()方法如何


for(inti=1;i您需要对页面上的控件进行递归查找。
根据性能.net默认情况下不支持此操作


阅读有关递归FindControl的更多信息

您需要在页面上对控件进行递归查找。 根据性能.net默认情况下不支持此操作


阅读有关Recursive FindControl的更多信息

您可以这样做,在顶层像这样包装一个:

    <div id="Content" runat="Server">

    <table border="0" cellspacing="0" cellpadding="0" width="100%">
        <tr>
            <td><asp:Literal ID="Literal1" runat="server"></asp:Literal></td>
            <td><asp:Literal ID="Literal2" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal3" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal4" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal5" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal6" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal7" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal8" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal9" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal10" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal11" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal12" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal13" runat="server"></asp:Literal></td>

        </tr>
    </table>

    </div>

您可以这样编写代码:

        for (int i = 1; i < 10; i++)
        {
            Literal li = (Literal)Content.FindControl("Literal"+i);
        }
for(int i=1;i<10;i++)
{
Literal li=(Literal)Content.FindControl(“Literal”+i);
}

您可以这样做,在顶层包装a,如下所示:

    <div id="Content" runat="Server">

    <table border="0" cellspacing="0" cellpadding="0" width="100%">
        <tr>
            <td><asp:Literal ID="Literal1" runat="server"></asp:Literal></td>
            <td><asp:Literal ID="Literal2" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal3" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal4" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal5" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal6" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal7" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal8" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal9" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal10" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal11" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal12" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal13" runat="server"></asp:Literal></td>

        </tr>
    </table>

    </div>

您可以这样编写代码:

        for (int i = 1; i < 10; i++)
        {
            Literal li = (Literal)Content.FindControl("Literal"+i);
        }
for(int i=1;i<10;i++)
{
Literal li=(Literal)Content.FindControl(“Literal”+i);
}

当您使用母版页时,您的控件没有直接从page.FindControl()方法中获取。因此,您需要深入1级才能从asp:ContentPlaceHolder id中找到控件

母版页:

<asp:ContentPlaceHolder ID="cphContent" runat="server" />
<asp:Content ID="Content2" ContentPlaceHolderID="cphContent" runat="server">
    <asp:Literal ID="day1" runat="server"></asp:Literal>
</asp:Content>

aspx页面:

<asp:ContentPlaceHolder ID="cphContent" runat="server" />
<asp:Content ID="Content2" ContentPlaceHolderID="cphContent" runat="server">
    <asp:Literal ID="day1" runat="server"></asp:Literal>
</asp:Content>

aspx Page.cs:

var literals = Page.Master.FindControl("cphContent").Controls.OfType<Literal>();
foreach (Literal literal in literals)
{
     literal.Text = "Your Text";
}
var literals=Page.Master.FindControl(“cphContent”).Controls.OfType();
foreach(文本中的文本)
{
literal.Text=“您的文本”;
}

当您使用母版页时,您的控件没有直接从page.FindControl()方法中获取。因此,您需要深入1级才能从asp:ContentPlaceHolder id中找到控件

母版页:

<asp:ContentPlaceHolder ID="cphContent" runat="server" />
<asp:Content ID="Content2" ContentPlaceHolderID="cphContent" runat="server">
    <asp:Literal ID="day1" runat="server"></asp:Literal>
</asp:Content>

aspx页面:

<asp:ContentPlaceHolder ID="cphContent" runat="server" />
<asp:Content ID="Content2" ContentPlaceHolderID="cphContent" runat="server">
    <asp:Literal ID="day1" runat="server"></asp:Literal>
</asp:Content>

aspx Page.cs:

var literals = Page.Master.FindControl("cphContent").Controls.OfType<Literal>();
foreach (Literal literal in literals)
{
     literal.Text = "Your Text";
}
var literals=Page.Master.FindControl(“cphContent”).Controls.OfType();
foreach(文本中的文本)
{
literal.Text=“您的文本”;
}

@ErdinçÖzdemir,您遇到了什么问题/错误?您的确切要求是什么?调试时监视的文本为空。找不到控件(文本)在第页。@ErdinçÖzdemir,您确定页面中有控件,还是在其他控件(例如面板)中有所有文字控件?是的,确定。在第页有一个表,表中每“td”一个s有一个div。div中有文本。我将在问题中添加html代码。@Habib:请问他是否使用母版页?@Erdinçzdemir,您遇到了什么问题/错误?您的确切要求是什么?调试时观察文本,它为空。找不到控件(文本)第页。@ErdinçÖzdemir,您确定页面中有控件,还是其他控件(例如面板)中有所有文字控件?是的,确定。第页有一个表格,表格中每个“td”的