Я создаю контейнер, используя Panel
элемент управления следующим образом:
public class CustomContainer : Panel
{
public override void RenderBeginTag(HtmlTextWriter writer)
{
var control this.Page.LoadControl("web user control path.ascx");
control.ID = "userControlId";
control.RenderControl(writer);
base.RenderBeginTag(writer);
}
public void ShowMessage(string message)
{
var control = this.FindControl("userControlId"); // control here is null!!
var custom = control as CustomControl;
custom.Message = message;
}
}
, когда я пытаюсь найти элемент управления с идентификатором userControlId
, который я рендерил, он всегда возвращает ноль!Кто-нибудь знает, что происходит?Как я могу решить эту проблему?
Кстати: я не могу добавить метод CustomControl
in CreateChildControls
, потому что если CustomContainer
имеет кодовый блок, я получил исключение!
Коллекция элементов управления не может быть изменена, поскольку элемент управления содержит блоки кода (т. Е. <% ...%>).