C# 在aspx页面中查找文本
我的网页上有42个文本及其ID,如ltr1、ltr2、…、ltr41、ltr42。我想在for循环中更改它们的文本属性 以下是html代码: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"> &
<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”的