Asp.net Foreach循环和占位符
我的.aspx文件中有一个占位符 当我在.aspx.cs文件中将控件添加到中时,除了一些表格框和标签之外,我还添加了一些文字控件Asp.net Foreach循环和占位符,asp.net,Asp.net,我的.aspx文件中有一个占位符 当我在.aspx.cs文件中将控件添加到中时,除了一些表格框和标签之外,我还添加了一些文字控件 phOutputs.Controls.Add(new LiteralControl("<tr><td>")); phOutputs.Controls.Add(lbl1); phOutputs.Controls.Add(new LiteralControl("</td><td>
phOutputs.Controls.Add(new LiteralControl("<tr><td>"));
phOutputs.Controls.Add(lbl1);
phOutputs.Controls.Add(new LiteralControl("</td><td>"));
phOutputs.Controls.Add(tbx1);
phOutputs.Controls.Add(new LiteralControl("</td></tr>"));
沿着这条路,我试着像这样使用foreach循环
foreach文本框tbxInput in phOutputs.Controls
但我在运行时遇到强制转换异常,表示无法将LiteralControl转换为tablebox
有什么更好的方法可以做到这一点呢?如果您试图在文本框上循环,您可以使用Linq仅选择作为文本框的控件,然后迭代这些控件:
foreach(TextBox tbxInput in phOutputs.Controls.Where(o => o is TextBox))
瞧;无InvalidCastException。此错误是因为您的集合不仅包含文本框。 OfType扩展可用于筛选
foreach (TextBox tbxInput in phOutputs.Controls.OfType<TextBox>())
{
}
另外,您也可以在foreach中对基类WebControl进行转换,而不是对TextBox进行转换,但这取决于您希望在该循环中执行的操作。当然,如果您需要特定于textbox的属性,则此变量不起作用。您应该首先检查控件是否为textbox类型,然后相应地将其强制转换为textbox
foreach (control crtl in phInputs.Controls)
{
if(crtl is TextBox )
{
TextBox txt = (TextBox )crtl;
}
}
实际上是什么?那是另一个占位符。我贴错了哦,酷,是的,这正是我想要的。我会试试的谢谢谢谢大家这些都是很好的答案。。。很难选出最好的