На основании ответа CKoenig , здесь проще работать с простым списком:
void GetAllBlocks(Control container, List<HtmlGenericControl> blocks)
{
foreach(var ctr in container.Controls.Cast<Control>)
{
if (ctr.Name.StartsWith("block") && ctr is HtmlGenericControl)
blocks.Add(ctr);
if (ctr.Controls.Count > 0)
GetAllBlocks(ctr, blocks);
}
}
Теперь для его использования есть такой код: (pnlContainer - это идентификатор удерживающей панеливсе блоки)
List<HtmlGenericControl> blocks = new List<HtmlGenericControl>();
GetAllBlocks(pnlContainer, blocks);
foreach (HtmlGenericControl block in blocks)
{
block.InnerHtml = "changed by code behind, id is " + block.Id;
}
Когда вы станете более "продвинутым", используйте исходный код ответа и получите следующее:
IterAllBlocks(pnlContainer, block => {
block.InnerHtml = "changed by code behind, id is " + block.Id;
});
Что будет делать то же самое, только большеэлегантно.