Предполагая, что вы сохраняете его правильно, вы должны иметь возможность получить к нему доступ через код, используя метод FindControl
.В зависимости от того, где находится элемент управления, вам может потребоваться рекурсивный поиск по иерархии элементов управления:
private Control FindControlRecursive(Control root, string id)
{
if (root.ID == id)
{
return root;
}
foreach (Control c in root.Controls)
{
Control t = FindControlRecursive(c, id);
if (t != null)
{
return t;
}
}
return null;
}
Использование FindControlRecursive
:
TextBox txt = this.FindControlRecursive(Page.Form, "TextBox1") as TextBox;
if (txt != null)
{
string text = txt.Text;
}
Если вы все еще не можете найти его с помощьюПри использовании вышеуказанного метода убедитесь, что вы создаете элемент управления после каждой обратной передачи, например, до Page_Load
, например OnInit
.
РЕДАКТИРОВАНИЕ
Я думаю,вам нужно изменить способ добавления контента в контейнер.Вместо использования <span>
я бы использовал Panel
и вместо создания разметки просто добавил элементы управления на панель в выделенном коде:
TextBox txt = new TextBox();
txt.ID = String.Format("txt_{0}", Panel1.Controls.Count);
Panel1.Controls.Add(txt);